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à.
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.
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.
