Autor Zpráva
Perry
Profil
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 *
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
Kajman_

A kdybych napojoval ty tabulky 3 ? join ctvrta... ..
Kajman_
Profil *
Tak to bude obdobné. Prostě k tomu připojení k podmínce na id dáte i podmínku na dataTyp.
Perry
Profil
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 *
select p.pozice, p.userID, coalesce(d.popis1,t.popis2,c.popis3) as popis from....

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: