Autor | Zpráva | ||
---|---|---|---|
TSmt Profil * |
#1 · Zasláno: 23. 5. 2013, 21:58:37
Zdravím,
sjednoduji tabulky skrze UNION, mám tedy takovýto kód: SELECT id, nazev, znacka FROM auta UNION SELECT id, nazev, znacka FROM dodavky značka je číslo, které potřebuji spojit s jinou tabulkou. značka = číslo v jiné tabulce představující název značky. Jak použít LEFT JOIN u UNION? Děkuji |
||
juriad Profil |
#2 · Zasláno: 23. 5. 2013, 22:07:08
Výsledek UNIONu dáš do závorek a pojmenuješ, pak s tím budeš pracovat, jakoby to byla obyčejná tabulka.
SELECT * FROM ( SELECT id, nazev, znacka FROM auta UNION SELECT id, nazev, znacka FROM dodavky ) vozidla LEFT JOIN znacky ON vozidla.znacka = znacky.id UNION často zavání špatným návrhem, zkus se zamyslet, jestli by nebylo lepší jen přidat další atribut. Vozidlo má: id, název, značku, typ. Typ bude: osobní, dodávka, náklaďák. |
||
ts_istudio Profil |
#3 · Zasláno: 23. 5. 2013, 22:07:33
TSmt:
google našel: select a.id, t1.column_1, t2.column_2 from ( select id from t1 union select id from t2 ) a left outer join t1 on a.id = t1.id left outer join t2 on a.id = t2.id |
||
TSmt Profil * |
#4 · Zasláno: 23. 5. 2013, 22:56:44
juriad:
Díky moc. Navrhlý to je poměrně dobře, značka a nazev je stejné, pak se tříští, to by ta tabulka byla rozsáhlá až až :) |
||
juriad Profil |
#5 · Zasláno: 23. 5. 2013, 23:07:17
TSmt:
Pokud jsi si návrhem jistý, může to být správná varianta. A zkusil jsi provést denormalizaci? Ta často způsobí, že se původně tabulka s mnoha sloupci rozpadne na několik menších. Například z tabulky (A, B, C, D, E), kde (C, D) závisí na B a E závisí na D udělá 3 tabulky: (A, B), (B, C, D), (D, E) |
||
Kajman Profil |
Druhá varianta
SELECT auta.id, nazev, znacka FROM auta LEFT JOIN znacky ON auta.znacka = znacky.id UNION SELECT dodavky.id, nazev, znacka FROM dodavky LEFT JOIN znacky ON dodavky.znacka = znacky.id |
||
TSmt Profil * |
#7 · Zasláno: 24. 5. 2013, 19:43:04
juriad:
Nezkoušel, já moc s SQL kamarád nejsem :-) |
||
Časová prodleva: 11 let
|
0