join

INNER JOIN o LEFT JOIN: quale scegliere?

La scelta dipende innanzitutto da quali linee devono rimanere visibili, non da una preferenza di sintassi.

Team SQL.tn8min
Due join confrontano corrispondenze e righe a sinistra senza equivalenti

Quale popolazione dovresti mantenere?

INNER JOIN restituisce solo le righe con una corrispondenza. LEFT JOIN mantiene tutte le righe della tabella di sinistra e completa le colonne mancanti con NULL.

Per trovare clienti senza ordine, i clienti devono essere lasciati. Per analizzare solo gli ordini legati ad un cliente valido, INNER JOIN esprime meglio la necessità.

I nomi, gli importi e i dati utilizzati in questo articolo sono fittizi e creati a scopo didattico.

La domanda è stata spiegata

Inizia definendo cosa dovrebbe rappresentare una riga del risultato. Questa decisione determina le colonne, i raggruppamenti e i controlli necessari.

L'esempio seguente isola il meccanismo principale. Eseguilo, osserva il risultato, quindi modifica una clausola alla volta per comprenderne l'effetto.

Conta gli ordini senza perdere clienti inattivi
SELECT c.nom, COUNT(co.id_commande) AS commandes
FROM clients c
LEFT JOIN commandes co ON co.id_client = c.id_client
GROUP BY c.id_client, c.nom;

Leggi il risultato come un analista

COUNT è per l'ID comando nullable, non *. Un cliente senza pari ottiene quindi zero.

Un filtro sugli ordini effettuati in WHERE potrebbe rimuovere le righe NULL e annullare l'effetto di LEFT JOIN; posizionarlo su ON se la popolazione di sinistra deve rimanere completa.

  • Nomina la popolazione di riferimento.
  • Pianifica linee senza eguali.
  • Conta una colonna sul lato destro.
  • Controllare i filtri posizionati su ON o WHERE.

Errori che distorcono l'analisi

Una query può essere valida senza rispondere correttamente alla domanda. Gli errori più costosi spesso sono silenziosi: perimetro sbagliato, linea moltiplicata o valore mancante interpretato come zero.

Prima di condividere il risultato, confrontalo con un piccolo campione calcolato manualmente e mantieni la definizione dell'ambito con la query.

  • Scegli INNER JOIN per abitudine.
  • Posiziona un filtro destro in WHERE dopo LEFT JOIN.
  • Contare * e visualizzare 1 per un'assenza.
  • Raggruppa solo per nome e unisci gli omonimi.

Mettiti in pratica

I clienti si esercitano senza un ordine e poi lo riscrivono con NOT EXISTS.

Il simulatore SQL di SQL.tn esegue solo query di lettura su dati fittizi nel tuo browser. Puoi provare più scritture e confrontare i risultati senza installare alcun software.

Metti in pratica questa guida.

Apri l’esercizio collegato, esegui la query e confronta il risultato atteso.

Inizia l’esercizio