Dreke90 di Dreke90
Genius 6795 punti

I predicati delle interogazioni nidificate.

Per poter metter a confronto i valori restituiti dalla sotto interrogazione con quelli dell'interrogazione a livello superiore,faremo uso di alcuni predicati.

In
In per controllare se un valore appartiene all'insieme di valori restituito dalla sotto interrogazione.

Any
Any per controllare se un valore verifica una condizione con almeno uno dei valori dell'insieme restituito dalla sotto interrogazione.

All
All per controllare se un valore verifica una condizione con tutti i valori dell'insieme restituito dalla sotto interrogazione.

Exists
Exists per controllare se la sotto interrogazione restituisce almeno un valore.

A ognuno dei precedenti predicati può naturalmente essere applicato l'operatore Not,per negare le condizioni appena viste.

Esempio

Visualizzare i nominativi degli studenti che frequentano classi con più di 30 allievi.

Select Cognome, Nome
From Studenti
WHhere CodiceClasse IN
(
Select CodiceClasse
From Studenti
Gruop BY CodiceClasse
Where Count (*)>30);
Simuliamo passo per passo l'esecuzione dell'interrogazione partendo anche in questo caso dalla sotto interrogazione:
1)E' eseguita la sotto interrogazione che restituisce l'insieme formato dai codici delle classi che hanno più di 30 studenti.

2)A questo punto è eseguita l'interrogazione a livello superiore,che effettua un taglio orizzontale della tabella Studenti selezionando le righe che soddisfano la condizione realizzata con il predicato IN,vengono perciò selezionate solo le righe corrispondenti a valori dell'attributo CodiceClasse appartenetti all'insieme ricavato dalla sotto interrogazione.

3)Le righe della tabella ricavata dal passo precedente vengono tagliate verticalmente,in modo da visualizzare l'elenco dei nominativi degli studenti che frequentano classi con più di 30 allievi.

Registrati via email