left join
select clienti.nome, ordini.id
from clienti
left join ordini on ordini.cliente_id = clienti.id;
right join
select ordini.id, clienti.nome
from ordini
right join clienti on clienti.id = ordini.cliente_id;
join + aggregazioni
select clienti.nome, count(ordini.id) as totale
from clienti
left join ordini on ordini.cliente_id = clienti.id
group by clienti.nome;
panoramica
In questo capitolo su join avanzati, left, right e full join con scenari reali. L'obiettivo è trasformare i concetti in micro-pattern riutilizzabili con esempi piccoli e verificabili.
Lavora in sequenza: leggi, prova, modifica gli snippet e annota i trade-off principali (performance, leggibilità, manutenzione).
badge: joins
obiettivi
- capire e applicare left join in uno scenario reale
- capire e applicare right join in uno scenario reale
- capire e applicare join + aggregazioni in uno scenario reale
- riconoscere trade-off tra chiarezza e performance
scheda rapida
SELECT categoria, COUNT(*) AS tot
FROM prodotti
WHERE attivo = TRUE
GROUP BY categoria
ORDER BY tot DESC
LIMIT 5;
Adatta questo scheletro agli esempi della lezione e sostituisci i dati con il tuo dominio.
tips
- usa alias chiari
- filtra presto con WHERE
- controlla i piani di esecuzione
- usa LEFT JOIN per dati opzionali
- controlla cardinalità
- evita join su campi non indicizzati
tip: Se una join duplica righe, ricontrolla la cardinalità.
mini progetto
Report ordini-clienti-prodotti.
- definisci join chiave
- aggiungi join prodotti
- gestisci NULL
- verifica duplicati
output atteso: uno script o query ripetibile con risultati verificabili.
checklist
- ho eseguito gli snippet e controllato l'output
- ho annotato almeno 2 trade-off
- ho completato il mini progetto
- ho salvato un riepilogo personale