Parola chiave
LEFT JOIN
Mantieni ogni riga della tabella di sinistra, anche quando a destra non c'è corrispondenza.
SELECT c.email, o.order_id
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.customer_id;
Un cliente senza ordini compare comunque, con NULL nelle colonne dell'ordine. Una condizione sulla tabella di
destra va nell'ON; nel WHERE elimina di nuovo quelle righe e trasforma la join in una inner join.
SELECT c.name, COUNT(p.product_id) AS products FROM categories c LEFT JOIN products p ON p.category_id = c.category_id GROUP BY c.name ORDER BY products, c.name LIMIT 6;
| name | products |
|---|---|
| Accessories | 0 |
| Coffee | 0 |
| Drinks | 0 |
| Gift boxes | 0 |
| Tea | 0 |
| Coffee gift boxes | 2 |