Junior
Kā darbojas SQL Join?
sobes.tech AI
Atbilde no AI
SQL JOIN apvieno rindas no divām vai vairākām tabulām, pamatojoties uz saistīto kolonnu starp tām. Pastāv vairāki JOIN veidi:
INNER JOIN: Atgriež rindas, kurās vērtības sakrīt abās tabulās.LEFT (OUTER) JOIN: Atgriež visas rindas no kreisās tabulas un sakrītošās rindas no labās. Ja sakritību nav, labās tabulas kolonnās būsNULLvērtības.RIGHT (OUTER) JOIN: Atgriež visas rindas no labās tabulas un sakrītošās rindas no kreisās. Ja sakritību nav, kreisās tabulas kolonnās būsNULL.FULL (OUTER) JOIN: Atgriež visas rindas no abām tabulām. Ja sakritību nav, attiecīgajās kolonnās būsNULL.CROSS JOIN: Atgriež abu tabulu dekartisko produktu (katra pirmās tabulas rinda apvienojas ar katru no otras tabulas rindām).
Sintakse parasti izskatās šādi:
SELECT kolonna1, kolonna2...
FROM tabula1
JOIN tabula2 ON tabula1.kopīgā_kolonna = tabula2.kopīgā_kolonna;
Piemērs INNER JOIN:
SELECT pasūtījumi.order_id, klienti.customer_name
FROM pasūtījumi
INNER JOIN klienti ON pasūtījumi.customer_id = klienti.customer_id;
Aplūkosim tabulas klienti un pasūtījumi:
klienti
| customer_id | customer_name |
|---|---|
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
pasūtījumi
| order_id | customer_id | amount |
|---|---|---|
| 101 | 1 | 100 |
| 102 | 2 | 150 |
| 103 | 1 | 200 |
| 104 | 4 | 50 |
INNER JOIN rezultāts būs:
| order_id | customer_name |
|---|---|
| 101 | Alice |
| 102 | Bob |
| 103 | Alice |
LEFT JOIN rezultāts (pasūtījumi LEFT JOIN klienti):
| order_id | customer_id | amount | customer_name |
|---|---|---|---|
| 101 | 1 | 100 | Alice |
| 102 | 2 | 150 | Bob |
| 103 | 1 | 200 | Alice |
| 104 | 4 | 50 | NULL |