Code Lab е в разработка. Постепенно добавяме нови уроци и подобрения. Прогресът може да бъде изтрит.
Зареждане…
Code Lab е в разработка. Постепенно добавяме нови уроци и подобрения. Прогресът може да бъде изтрит.
Зареждане…
Code Lab е в разработка. Постепенно добавяме нови уроци и подобрения. Прогресът може да бъде изтрит.
SQL / POSTGRESQL / Учене / LESSON 07
LEFT JOIN запазва всички редове от лявата таблица. Когато няма съвпадение, колоните от дясната са NULL. Това позволява да покажем и клиенти без поръчки. Условие върху дясната таблица в WHERE може да премахне тези редове.
Пример: SELECT c.name, o.id AS order_id FROM customers c LEFT JOIN orders o ON c.id = o.customer_id показва всеки клиент; ако няма поръчка, order_id е NULL. Това е различно от INNER JOIN, който пропуска клиентите без съвпадение.
Мини пример:
SELECT c.id, o.id AS order_id FROM customers c LEFT JOIN orders o ON c.id = o.customer_id;
Работни таблици за тази задача. Оценяването ползва и други набори със същата схема.
| id | name | category | price | stock |
|---|---|---|---|---|
| 1 | Book Light | books | 12 | 8 |
| 2 | Bowl | home | 20 | 4 |
| 3 | Lamp | home | 30 | 2 |
| 4 | Notebook | books | 10 | 12 |
| 5 | Box | NULL | 5 | 0 |
| 6 | Book Ocean | books | 20 | 1 |
| 7 | Mug | home | 30 | 3 |
| 8 | Pen | books | 19.99 | 7 |
| 9 | Cable | tools | 20.01 | 5 |
| 10 | Clip | tools | 9.99 | 3 |
| 11 | Fan | home | 30.01 | 1 |
| 12 | Book Edge | books | 20.01 | 2 |
| id | name | city |
|---|---|---|
| 1 | Mira | Sofia |
| 2 | Niko | Varna |
| 3 | Iva | Sofia |
| 4 | Alex | NULL |
| 5 | Boris | Plovdiv |
| 6 | Lena | Burgas |
| id | customer_id | total |
|---|---|---|
| 1 | 1 | 20 |
| 2 | 1 | 30 |
| 3 | 2 | 10 |
| 4 | 3 | 0 |
| 5 | 6 | 40 |
Очаквани колони: customer, order_id · редът на редовете не се изисква
Очакван резултат (показаните данни):
Зареждане…LEFT JOIN запазва всички редове от лявата таблица. Когато няма съвпадение, колоните от дясната са NULL. Това позволява да покажем и клиенти без поръчки. Условие върху дясната таблица в WHERE може да премахне тези редове. Пример: SELECT c.name, o.id AS order_id FROM customers c LEFT JOIN orders o ON c.id = o.customer_id показва всеки клиент; ако няма поръчка, order_id е NULL. Това е различно от INNER JOIN, който пропуска клиентите без съвпадение.
QUERY STANDBY
›