Junior
Kako radi SQL Join?
sobes.tech АИ
Одговор од АИ
SQL JOIN spaja redove iz dvije ili više tablica na temelju povezane stupca između njih. Postoji nekoliko vrsta JOIN:
INNER JOIN: Vraća redove gdje postoje podudaranja vrijednosti u obje tablice.LEFT (OUTER) JOIN: Vraća sve redove s lijeve tablice i odgovarajuće redove s desne. Ako nema podudaranja u desnoj tablici, vraćaju seNULLvrijednosti za stupce desne tablice.RIGHT (OUTER) JOIN: Vraća sve redove s desne tablice i odgovarajuće redove s lijeve. Ako nema podudaranja u lijevoj tablici, vraćaju seNULLvrijednosti za stupce lijeve tablice.FULL (OUTER) JOIN: Vraća sve redove iz obje tablice. Ako nema podudaranja, vraćaju seNULLvrijednosti za odgovarajuće stupce.CROSS JOIN: Vraća kartezijski produkt dviju tablica (svaki red iz prve tablice kombinira se s svakim redom iz druge).
Sintaksa je obično ovakva:
SELECT stupac1, stupac2...
FROM tablica1
JOIN tablica2 ON tablica1.zajednički_stupac = tablica2.zajednički_stupac;
Primjer INNER JOIN:
SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
Razmotrimo tablice customers i orders:
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 |
Rezultat INNER JOIN će biti:
| order_id | customer_name |
|---|---|
| 101 | Alice |
| 102 | Bob |
| 103 | Alice |
Rezultat LEFT JOIN (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 |