Junior
Hogyan működik az SQL Join?
sobes.tech MI
Válasz az MI-től
SQL JOIN két vagy több tábla sorait kapcsolja össze egy közös oszlop alapján. Többféle JOIN típus létezik:
INNER JOIN: Olyan sorokat ad vissza, ahol mindkét táblában egyező értékek vannak.LEFT (OUTER) JOIN: Az összes sort visszaadja a bal oldali táblából és a hozzájuk tartozó egyező sorokat a jobb oldaliból. Ha nincs egyezés, akkor a jobb oldal oszlopaiNULLértéket vesznek fel.RIGHT (OUTER) JOIN: Az összes sort visszaadja a jobb oldali táblából és a hozzá tartozó egyező sorokat a bal oldaliból. Ha nincs egyezés, akkor a bal oldal oszlopaiNULLértéket vesznek fel.FULL (OUTER) JOIN: Mindkét tábla összes sorát visszaadja. Ha nincs egyezés, a hiányzó oszlopokNULLértéket vesznek fel.CROSS JOIN: A két tábla kartéziánus szorzatát adja vissza (minden sor az első táblából összekapcsolódik minden sorral a másodikból).
A szintaxis általában így néz ki:
SELECT oszlop1, oszlop2...
FROM tabla1
JOIN tabla2 ON tabla1.közös_oszlop = tabla2.közös_oszlop;
INNER JOIN példája:
SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
Tekintsük a customers és orders táblákat:
customers
| customer_id | customer_name |
|---|---|
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
orders
| order_id | customer_id | amount |
|---|---|---|
| 101 | 1 | 100 |
| 102 | 2 | 150 |
| 103 | 1 | 200 |
| 104 | 4 | 50 |
Az INNER JOIN eredménye:
| order_id | customer_name |
|---|---|
| 101 | Alice |
| 102 | Bob |
| 103 | Alice |
A LEFT JOIN eredménye (orders LEFT JOIN customers):
| order_id | customer_id | amount | customer_name |
|---|---|---|---|
| 101 | 1 | 100 | Alice |
| 102 | 2 | 150 | Bob |
| 103 | 1 | 200 | Alice |
| 104 | 4 | 50 | NULL |