Autor | Zpráva | ||
---|---|---|---|
Karol.H123 Profil * |
#1 · Zasláno: 17. 7. 2016, 09:52:01
Ahojte, mohli by ste mi prosim poradit ako spravit jeden prikaz v PHPMYADMIN?
Mám tieto 4 tabulky: 1. tabulka clanky_sk (v ktorej su tieto stlpce) id_clanku a kod_clanku 2. tabulka clanky_pl (v ktorej su tieto stlpce) id_clanku a kod_clanku Tu by som potreboval aby sa v tabulke clanky_pl porovnal kod_clanku (co je vlastne idendifikator) s kod_clanku v tabulke clanky_sk a vratil id_clanku len tych clankov ktore sa nachadzaju v oboch tabulkach podla daneho idendifikatora. 1. tabulka clanky_jazyk_sk (v ktorej su tieto stlpce) id, id_clanku, nazov_clanku, popis_clanku, text_clanku 2. tabulka clanky_jazyk_pl (v ktorej su tieto stlpce) id, id_clanku, nazov_clanku, popis_clanku, text_clanku V tychto tabulkach by som potreboval aby sa podla minuleho vysledku v tabulkach vyselektovali vysledky podla id_clanku a nasledne sa v tabulke clanky_jazyk_sk prepisali hodnoty nazov_clanku, popis_clanku, text_clanku podla vysledku z clanky_jazyk_pl O co vlastne ide? Mam 2 verzie webu. Slovensku a Polsku. Kazdu verziu mal na starosti iny clovek a tak sme tam pridavali clanky kazdy inak jediny rovnaky idendifikator tych clankov je kod_clanku. Polska verzia sa vsak nejak postupne prestala aktualizovat a tak tam aktualne chyba docela dost clankov a dalsich veci zo slovenskej. Chcel by som skopirovat vsetky potrebne veci zo slovenskej verzie do tej polskej, ale potrebujem aby clanky, ktore uz su na polskej verzie prelozene aj ostali prelozene. Cize skopirujem slovenske tabulky do polskej stranky, potom by som tam chcel pustit tento prikaz, nasledne vymazem polske tabulky a slovenske premenujem na _pl Napriklad: 1. tabulka clanky_sk 5 , 5489 8 , 8547 2. tabulka clanky_pl 1 , 4547 15 , 5489 1. tabulka clanky_jazyk_sk 4, 5, Kolobezky, Clanok o kolobezkach, kolobezky su dopravny prostriedok 7, 8, Motorky, Clanok o motorkach, motorky su dopravny prostriedok 2. tabulka clanky_jazyk_pl 23, 15, Skutery, Artykuł na skuterach, skutery jako środek transportu Výsledok: 1. tabulka clanky_jazyk_sk 4, 5, Skutery, Artykuł na skuterach, skutery jako środek transportu 7, 8, Motorky, Clanok o motorkach, motorky su dopravny prostriedok clanky_jazyk_sk nasledne premenujem na clanky_jazyk_pl a clanok 8, nakolko nebol v polskej verzii prelozeny, ostane po slovensky a prelozi sa dotatocne.. :) |
||
TomášK Profil |
#2 · Zasláno: 17. 7. 2016, 12:42:48
Pár poznámek k návrhu, i když to možná vzniklo jen kvůli zjednodušení pro dotaz:
- Proč existují tabulky clanky_sk/pl? Nemohly by místo toho clanky_jazyk_sk mít v sobě kód článku? - Nebylo by jednodušší mít místo tabulky pro každý jazyk jednu tabulku a sloupec, ve kterém jazyku článek je? - Nebude lepší řešit chybějící překlady až při výběru z databáze? Dotaz, který vybírá všechny články pro polskou verzi vybere všechny články, pro ty, kde je polský překlad se použije polský, pro ostatní slovenský K řešení, následující dva dotazy by měly doplnit do polských tabulek chybějící překlady, ale netestoval jsem to. -- předpokládá unikátní index na kod_clanku INSERT IGNORE INTO clanky_pl(kod_clanku) SELECT kod_clanku FROM clanky_sk; INSERT INTO clanky_jazyk_pl(id_clanku, nazov_clanku, popis_clanku, text_clanku) SELECT clanky_pl.id_clanku, clanky_jazyk_sk.nazov_clanku, clanky_jazyk_sk.popis_clanku, clanky_jazyk_sk.text_clanku FROM clanky_jazyk_sk JOIN clanky_sk ON clanky_jazyk_sk.id_clanku = clanky_sk.id_clanku JOIN clanky_pl ON clanky_pl.kod_clanku = clanky_sk.kod_clanku LEFT JOIN clanky_jazyk_pl ON clanky_jazyk_pl.id_clanku = clanky_pl.id_clanku WHERE clanky_jazyk_pl.id IS NULL |
||
Karol.H123 Profil * |
#3 · Zasláno: 18. 7. 2016, 08:19:46
TomášK: Ďakujem, pomohlo.
A je to tak pre to, lebo to sú vlastne ako keby 2 samostatne žijúce weby. Nemajú spoločnú databázu. Pôvodne sa nepočítalo že web bude dvojjazyčný a keď k tomu došlo tak sa vlastne len skopíroval web na novú dómenu/hosting a preložil. |
||
Časová prodleva: 9 let
|
0