Autor | Zpráva | ||
---|---|---|---|
Perry Profil |
#1 · Zasláno: 23. 8. 2009, 19:14:33
Mám tři tabulky.
V první mám data, která jsou svázaná s tabulkou 2 nebo 3 (určuji podle dataTyp - 1/2). Potřebuji napsat takový dotaz, abych získal data z první tabulky a přiřadil k nim odpovídající popisky z tabulky 2 a 3. Něco jako: SELECT prvni.*, CASE WHEN `prvni`.`dataTyp` = 1 THEN 'druha' ELSE 'treti' END AS `typ` FROM prvni ... a ted nejak udelat JOIN tak, aby kdyz typ = 'druha' bylo LEFT JOIN druha ON druha.ID = prvni.ID a kdyz typ = 'treti' aby bylo LEFT JOIN treti ON treti.ID = prvni.ID Jde to nějak ? |
||
Kajman_ Profil * |
#2 · Zasláno: 23. 8. 2009, 20:00:44
select * from prvni p left join druha d on p.id=d.id and p.dataTyp=1 left join treti t on p.id=t.id and ifnull(p.dataTyp,0)!=1 |
||
Perry Profil |
#3 · Zasláno: 23. 8. 2009, 20:16:33
Kajman_
A kdybych napojoval ty tabulky 3 ? join ctvrta... .. |
||
Kajman_ Profil * |
#4 · Zasláno: 23. 8. 2009, 21:01:47
Tak to bude obdobné. Prostě k tomu připojení k podmínce na id dáte i podmínku na dataTyp.
|
||
Perry Profil |
#5 · Zasláno: 24. 8. 2009, 10:47:58
Tak to funguje... díky... akorát ještě jeden drobný detail.... potřeboval bych aby to data z tech tabulek druha a treti dalo do jednoho sloupce. Ted mi to udela to, že mi pro kazdou JOIN tabulku vytvori ve vysledku jeden.
Každý se jmenuje jinak, takže jsem je přes AS v SELECT klauzuli pojmenoval vsechny stejne. Ted mam vedle sebe tri stejne pojmenovane sloupce :) a chtel bych to mit v jednom |
||
Kajman_ Profil * |
#6 · Zasláno: 24. 8. 2009, 12:20:26
select p.pozice, p.userID, coalesce(d.popis1,t.popis2,c.popis3) as popis from.... |
||
Časová prodleva: 15 let
|
0