MySql joins

Adatbázis kezelés

INNER JOIN

A MySQL INNER JOIN a leggyakrabban használt kapcsolótípus, amely lehetővé teszi, hogy két vagy több táblából kombináljunk adatokat egy közös oszlop (kapcsolómező) alapján. Az INNER JOIN csak azokat a sorokat adja vissza, amelyeknél mindkét táblában van egyezés. Ha az egyik táblában van egy rekord, aminek nincs párja a másikban, az egyszerűen kimarad az eredményhalmazból. Tulajdonképpen a táblák metszete az eredmény.

Nézzünk egy konkrét feladatot: forrás

LEFT JOIN

Míg az INNER JOIN csak a közös metszetet mutatja meg, a LEFT JOIN az elsődleges tábla összes adatát megtartja, akkor is, ha a másik táblában nincs hozzájuk tartozó pár.

A LEFT JOIN a „bal oldali” (azaz a FROM kulcsszó után álló) táblából minden sort visszaad. Ha a „jobb oldali” táblában (a JOIN utáni tábla) található kapcsolódó adat, azt hozzáilleszti. Ha nincs találat, akkor a jobb oldali tábla oszlopaiba egyszerűen egy NULL értéket tesz.

RIGHT JOIN

A RIGHT JOIN a jobb oldali (a JOIN kulcsszó után megnevezett) tábla összes sorát visszaadja. Ha a bal oldali táblában van kapcsolódó adat, azt hozzáfűzi. Ha nincs, akkor a bal oldali tábla oszlopaiba NULL értéket helyez. Gyakorlatilag ez a LEFT JOIN tükörképe.

Miért használjuk ritkábban, mint a LEFT JOIN-t?

A legtöbb fejlesztő preferálja a LEFT JOIN-t, mert az emberek többsége balról jobbra olvas, és logikusabbnak tűnik a „fő táblát” (ahonnan indulunk) először leírni a FROM után.A két lekérdezés ugyanazt az eredményt adja, csak a táblák sorrendje fordul meg:
TABLA1 LEFT JOIN TABLA2 ugyanaz, mint a TABLA2 RIGHT JOIN TABLA1

SELF JOIN

Egy táblát önmagával kapcsolunk össze. Úgy teszünk, mintha két külön táblánk lenne, de valójában ugyanazt hívjuk meg kétszer (kötelező alias-neveket használni, pl. t1 és t2).