Autor Zpráva
TSmt
Profil *
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
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
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 *
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
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 *
juriad:
Nezkoušel, já moc s SQL kamarád nejsem :-)

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: