SQL Left/Right Outer Join felcserélhető?
Azaz, ugyanaz e az eredmény a 2 esetben:
1. SELECT ... FROM Table2 RIGHT OUTER JOIN TABLE1 USING(...)
2. SELECT ... FROM Table1 LEFT OUTER JOIN TABLE2 USING(...)





Az outer elhegyható:
Left Outer Join = Left Join
Right Outer Join = Right Join
Left Join esetén az elsőnek megadott táblából lesz meg minden rekord, akár talál kapcsolatot a másik táblával, akár nem. A másodikként megadott táblából csak a találattal rendelkező adatok kerülnek bele az eredménybe.
Right Join esetén ugyanez, csak a második táblából kerül be minden rekord az eredménybe.





Vegyük akkor:
Ha csak azt írod, hogy JOIN, az az OUTER JOIN-al lesz megegyező.
OUTER JOIN - visszaadja a baloldali táblából, és a jobboldali táblából is az összes értéket, ha valahol nem talál illeszkedést akkor NULL-al egészíti ki.
INNER JOIN - mindkét táblából csak azokat a sorokat adja vissza, amikkel talált illeszkedést
A LEFT és a RIGHT ezeknek egyfajta kombinációja:
LEFT JOIN - Visszaadja a teljes baloldali táblát, és a jobboldaliból hozzákapcsolja azokat, amiknél van illeszkedés.
RIGHT JOIN - Visszaadja a teljes jobboldali táblát, és hozzákapcsolja a baloldaliból azokat, amiknél van illeszkedés
Van még a NATURAL JOIN ami egy kicsit különlegesebb eset, ez ugyanis nem kér illeszkedési feltételt, az egyező oszlopnevek egyező értékei alapján kapcsolja össze a két táblát, és az illeszkedésben résztvevő oszlopokból csak az egyiket adja vissza. AZT HISZEM, hogy alapvetően az INNER JOIN elvén párosít, de ebben az egyben nem vagyok teljesen biztos.





Pl:
"names" tábla:
id - name
----
AB - Alma Béla
KL - Kovács Lajos
MJ - Menő Jenő
BJ - Buga Jakab
"cities" tábla:
id - city
----
AB - Budapest
KL - Kecskemét
XY - Győr
WZ - Gyula
PP - Pécs
SELECT * FROM names LEFT JOIN cities ON names.id=cities.id;
Eredmény: (minden név, + ezekhez a városok)
AB - Alma Béla - Budapest
KL - Kovács Lajos - Kecskemét
MJ - Menő Jenő - NULL
BJ - Buga Jakab - NULL
SELECT * FROM names RIGHT JOIN cities ON names.id=cities.id;
Eredmény: (minden város, + ezekhez a nevek)
AB - Budapest - Alma Béla
KL - Kecskemét - Kovács Lajos
XY - Győr - NULL
WZ - Gyula - NULL
PP - Pécs - NULL
SELECT * FROM names INNER JOIN cities ON names.id=cities.id;
Eredmény: (nevek és városok, amik azonosítói mindkettőben szerepelnek)
AB - Alma Béla - Budapest
KL - Kovács Lajos - Kecskemét
SELECT * FROM names OUTER JOIN cities ON names.id=cities.id;
Eredmény: (minden város és minden név, de ahol az azonosító egyezik, az egy rekordban)
AB - Alma Béla - Budapest
KL - Kovács Lajos - Kecskemét
MJ - Menő Jenő - NULL
BJ - Buga Jakab - NULL
XY - NULL - Győr
WZ - NULL - Gyula
PP - NULL - Pécs
Remélem nem rontottam el. :))





Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!