Spájanie tabuliek v MySql

Tabuľka a

c
a
b

Tabuľka b

c
a
x
y
z

Join – Karteziánsky súčin. Všetkyprvky z jednej množiny sú spojené so všetkými prvkami druhej množiny.
select * from a, b
select * from a join b
select * from a inner join b
select * from a cross join b

a.c b.c
a a
b a
a x
b x
a y
b y
a z
b z

Where, On. Výber riadkov ktoré sa zhodujú
select * from a,b where a.c = b.c
select * from a join b on a.c = b.c
select * from a join b where a.c = b.c

a.c b.c
a a

Left Join Výber všetkých riadkov z ľavej (prvej tabuľky) ktoré sa zhodujú a v druhej tabuľke nenachádzajú.
select * from a left join b on a.c = b.c

a.c b.c
a a
b null

Right Join Výber všetkých riadkov z pravej (druhej tabuľky) ktoré sa zhodujú a v prvej tabuľke nenachádzajú.
select * from a right join b on a.c = b.c

a.c b.c
a a
null x
null y
null z

Záver: Stačia úplne JOIN a LEFT JOIN. Všetko ostatné sú len obmeny.

Full join v MySql Cross join alebo Inner Join alebo Join alebo bez Join

Full join je vlastne kartezsky sucin. Spojenie viacerych tabuliek pomocou full join spoji vsetky kombinacie riadkov urcenych tabuliek. Full join mySQL nepodporuje! Ale pouziva Cross join alebo Inner Join alebo Join alebo bez Join. Zapíše sa napr. takto:

select * from table1 CROSS JOIN table2
select * from table1 inner join table2
select * from table1 join table2
select * from table1, table2

Na vybratie riadkov ktore sa zhoduju pouzivame klauzulu WHERE alebo ON

select * from table1, table2 where table1.stlpec = table2.stlpec
select * from table1 join table2 on table1.stlpec = table2.stlpec

Left join

LEFT JOIN spôsobí, že sa zahrnú všetky riadky z ľavej (teda z prvej) tabuľky a z pravej tabuľky sa zahrnú súvisiace riadky, prípadne aj s hodnotou NULL.

select table2.column, table1.column from table2 left join table1 on table2.parent = table1.ID

Right Join

Použitím tohto spojenia dosiahneme vo výslednom výpise zahrnutie všetkých riadkov z pravej (teda z druhej) tabuľky. Ak nebol nájdený ten istý riadok v ľavej tabuľke, budú vo výsledku hodnoty NULL vo všetkých stĺpcoch použitých z prvej tabuľky. Úplne by sme si vystačili iba s ľavým spojením a jednoduchým prehodením poradia spájaných tabuliek okolo príkazu LEFT JOIN.

Spájanie 3 a viac tabuliek

Pri spojení dvoch tabuliek pomocou join vznika nová tabulka, ktorú môžeme spojiť znova s ďalšou tabuľkou atď. Takto môžeme spájať do nekonečna.

(T1 left join T2 on c1 = c2) Vznikla nová tabuľka.
((T1 left join T2 on c1 = c2) left join T3 on c3=c4) Vznikla nová tabuľka.
(((T1 left join T2 on c1 = c2) left join T3 on c3=c4) left join T4 on c5=c6) Vznikla nová tabuľka.

Alebo to iste v kombinácii right join.

(T1 left join T2 on c1 = c2) Vznikla nová tabuľka.
( T3 right join (T1 left join T2 on c1 = c2) on c3=c4) Vznikla nová tabuľka.
(( T3 right join (T1 left join T2 on c1 = c2) on c3=c4) left join T4 on c5=c6) Vznikla nová tabuľka.