Autor | Zpráva | ||
---|---|---|---|
martin88 Profil * |
#1 · Zasláno: 18. 9. 2010, 11:49:44
Ahoj,
mám takový návrh db: data (ID, ...) data_lng (lang_ID, data_ID, preklad) lang (ID, ...) A mám například aktivní jazyk češtinu ID = 2 a výchozí jazyk je angličtina ID = 1 A já potřebuju vybrat řádky z tabulky data tak, abych vybral právě aktivní překlad (tj. kde ID pro lang bude rovno 2), ale problém je v tom, že tento překlad nemusí existovat, v tom případě bych chtěl načíst výchozí jazyk, kde bude vše určitě přeloženo. Dá se to provést jedním dotazem? Nejsem v tom moc sběhlý a tak mě napadlo to řešit dvěma dotazy, napřed jedním SELECT d.*, dl.preklad FROM data d JOIN data_lng dl ON (d.ID = dl.data_ID) JOIN lang l ON (l.id = dl.lang_ID) WHERE l.ID = 2 pak otestuji, jestli jsem dostal nějaká data a pokud ne, použiju druhý, stejný dotaz i ID = 1 pro angličtinu. Problém je v tom, že pokud vybírám více řádků a nějaký překlad existuje - ale ne všechny - tak jsem o nějaké záznamy ochuzen. Můžete mi někdo poradit jak na to? Děkuji |
||
Kajman_ Profil * |
#2 · Zasláno: 20. 9. 2010, 11:27:34
SELECT d.*, ifnull(dl1.preklad,dl2.preklad) preklad FROM data d LEFT JOIN data_lng dl1 ON (d.ID = dl1.data_ID AND dl1.ID = 2) -- konkretni jazyk napr. 2 LEFT JOIN data_lng dl2 ON (d.ID = dl2.data_ID AND dl2.ID = 1) -- vychozi |
||
Časová prodleva: 10 let
|
0