Kezdőoldal » Számítástechnika » Programozás » SQL Left/Right Outer Join...

SQL Left/Right Outer Join felcserélhető?

Figyelt kérdés

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(...)


2016. ápr. 6. 08:06
 1/4 anonim ***** válasza:

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.

2016. ápr. 6. 10:23
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:

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.

2016. ápr. 6. 10:46
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:

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. :))

2016. ápr. 6. 15:03
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:
Ha nem számítjuk azt, hogy felcserélted több helyen az oszlopsorrendet, illetve hogy az ID oszlopot mindenhol csak egyszer szerepeltetted, jó.
2016. ápr. 6. 19:30
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!