Junior
Как работи SQL Join?
sobes.tech AI
Отговор от AI
SQL JOIN обединява редове от две или повече таблици въз основа на свързаната колона между тях. Има няколко типа JOIN:
INNER JOIN: Връща редове, където има съвпадения на стойности и в двете таблици.LEFT (OUTER) JOIN: Връща всички редове от лявата таблица и съответните редове от дясната. Ако няма съвпадение в дясната таблица, се връщат стойностиNULLза колоните на дясната таблица.RIGHT (OUTER) JOIN: Връща всички редове от дясната таблица и съответните редове от лявата. Ако няма съвпадение в лявата таблица, се връщат стойностиNULLза колоните на лявата таблица.FULL (OUTER) JOIN: Връща всички редове и от двата таблици. Ако няма съвпадение, се връщат стойностиNULLза съответните колони.CROSS JOIN: Връща картезианския продукт на двете таблици (всяки ред от първата таблица се комбинира с всеки ред от втората).
Обикновено синтаксисът изглежда така:
SELECT колона1, колона2...
FROM таблица1
JOIN таблица2 ON таблица1.обща_колона = таблица2.обща_колона;
Пример за INNER JOIN:
SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
Нека разгледаме таблиците customers и 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 |
Резултатът от INNER JOIN ще бъде:
| order_id | customer_name |
|---|---|
| 101 | Alice |
| 102 | Bob |
| 103 | Alice |
Резултатът от 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 |