Dreke90 di Dreke90
Genius 6795 punti

Interrogazioni nidificate

Per potenziare ulteriormente l'uso del comando Select è possibile scrivere delle interrogazioni SQL annidate,cioè strutturare più Select una dentro l'altra in modo da effettuare ricerche molti più complesse sulla base di dati. Le interrogazioni nidificate prevedono quindi l'utilizzo di una sotto interrogazione all'interno di un'interrogazione più esterna,cioè di un comando Select all'interno del corpo di un altro comando Select. Una sotto interrogazione più restituire un solo valore o un insieme di valori,su questo risultato e poi verificata la condizione della Select a livello superiore.

Esempio prendendo in considerazione che il sotto interrogazione restituisca un solo valore.

Visualizzare i nominativi degli studenti che hanno conseguito in “Matematica” il voto massimo assegnato in “Matematica”;


Select Cognome,Nome
From Studenti, Valutazioni
Where Studenti.Matricola = Valutazioni. Matricola
And Materia = “Matematica”
And Voto = (Select Max (Voto)
From Valutazioni
Where Materia = “Matematica”);

Simuliamo passo per passo l'esecuzione dell'interrogazione partendo dalla sotto interrogazione:
1)E' immediatamente eseguita la sotto interrogazione che restituisce,dopo aver effettuato il taglio orizzontale che seleziona dalla tabella Valutazioni solo le righe corrispondenti alla materia “Matematica”, il voto massimo assegnato in quella materia.
2)A questo punto è eseguita l'interrogazione a livello superiore,che effettua il taglio orizzontale che seleziona dalla tabella Valutazioni solo le righe corrispondenti alla materia “Matematica “e a un voto uguale al valore restituito dalla sotto interrogazione precedente;
3)è effettuato l'equin-join tra le tabelle Studenti e la tabella ricavata al passo precedente;
4)le righe della nuova tabella vengono tagliate verticalmente,visualizzando l'elenco dei nominativi degli studenti desiderati.

Registrati via email