Stai testando un elenco o una relazione?
statut IN ('Pagato', 'In attesa') descrive un elenco chiuso. EXISTS è adatto quando è necessario preservare una fila esterna se una fila collegata soddisfa una condizione.
EXISTS evita di duplicare un cliente che ha più ordini corrispondenti, perché conta solo l'esistenza della prima corrispondenza.
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.id_client, c.nom
FROM clients c
WHERE EXISTS (
SELECT 1
FROM commandes co
WHERE co.id_client = c.id_client
AND co.statut = 'Pagato'
);Leggi il risultato come un analista
La sottoquery è correlata da id_client. SELECT 1 indica che le colonne interne non vengono utilizzate nel risultato.
Fare attenzione a NOT IN se l'elenco può contenere NULL; NOT EXISTS spesso esprime più chiaramente l'assenza di una relazione.
- Identificare la chiave di correlazione.
- Testare un caso con più corrispondenze.
- Metti alla prova un caso senza eguali.
- Verificare l'eventuale presenza di NULL.
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.
- Mostrare colonne interne quando conta solo l'esistenza.
- Dimentica la correlazione e rendi EXISTS vero per tutte le righe.
- Utilizzare NOT IN con NULL imprevisto.
- Unisci quindi aggiungi DISTINCT per compensare le ripetizioni.
Mettiti in pratica
Esercita EXISTS su ordini di grandi dimensioni, quindi modifica la soglia e osserva la popolazione trattenuta.
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.
