Junior
Kuidas töötab SQL Join?
sobes.tech AI
Vastus AI-lt
SQL JOIN ühendab read kahest või enamast tabelist nende vahel oleva seotud veeru alusel. On olemas mitu JOIN tüüpi:
INNER JOIN: Tagastab read, kus väärtused vastavad mõlemas tabelis.LEFT (OUTER) JOIN: Tagastab kõik read vasakpoolsest tabelist ja sobivad read parempoolsest tabelist. Kui sobivusi ei ole, on parempoolsete veergude väärtusedNULL.RIGHT (OUTER) JOIN: Tagastab kõik read parempoolsest tabelist ja sobivad read vasakpoolsest tabelist. Kui sobivusi ei ole, on vasakpoolsete veergude väärtusedNULL.FULL (OUTER) JOIN: Tagastab kõik read mõlemast tabelist. Kui sobivusi ei ole, on vastavates veergudesNULL.CROSS JOIN: Tagastab kahe tabeli dekartse toote (iga esimese tabeli rida ühendatakse iga teise tabeli reaga).
Süntaks näeb tavaliselt välja selline:
SELECT veerg1, veerg2...
FROM tabel1
JOIN tabel2 ON tabel1.ühine_veerg = tabel2.ühine_veerg;
Näide INNER JOIN:
SELECT tellimused.order_id, kliendid.customer_name
FROM tellimused
INNER JOIN kliendid ON tellimused.customer_id = kliendid.customer_id;
Vaatame kliendid ja tellimused tabelid:
kliendid
| customer_id | customer_name |
|---|---|
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
tellimused
| order_id | customer_id | amount |
|---|---|---|
| 101 | 1 | 100 |
| 102 | 2 | 150 |
| 103 | 1 | 200 |
| 104 | 4 | 50 |
INNER JOIN tulemuseks on:
| order_id | customer_name |
|---|---|
| 101 | Alice |
| 102 | Bob |
| 103 | Alice |
LEFT JOIN tulemuseks (tellimused LEFT JOIN kliendid):
| order_id | customer_id | amount | customer_name |
|---|---|---|---|
| 101 | 1 | 100 | Alice |
| 102 | 2 | 150 | Bob |
| 103 | 1 | 200 | Alice |
| 104 | 4 | 50 | NULL |