

























Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
power point di introduzione alle query annidate scalri
Tipologia: Dispense
1 / 33
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!


























Le interrogazioni nidificate rappresentano uno strumento valido per effettuare interrogazioni complesse, che non possono essere realizzate con i comandi SQL visti finora. In pratica, un’interrogazione nidificata non è altro che un’interrogazione che permette il confronto tra uno o più attributi e il risultato di una sottointerrogazione.
funzionamento
esempio 1- codice SELECT cognome_madre, nome_madre FROM Maternità WHERE nome_figlio = ( SELECT nome_figlio FROM Paternità WHERE cognome_padre=”Colombo” and nome_padre=”Piero”);
esempio 2- codice In questo esempio vediamo come usare una query anniadata per verificare quali padri hanno avuto meno figli di «Corelli Lina» La query è la seguente: SELECT cognome_padre, nome_padre, COUNT() AS figli FROM paternità GROUP BY cognome_padre, nome_padre HAVING COUNT()< ( SELECT COUNT(*) FROM Maternità WHERE cognome_madre=”Corelli” and nome_madre=”Lina”);
esempio 2- spiegazione Poi la clausola having estrae da questa tabella solo le righe che riguardano i papà il cui numero di figli è inferiore al numero restituito dalla subquery. SELECT cognome_padre, nome_padre, COUNT() AS figli FROM paternità query esterna GROUP BY cognome_padre, nome_padre HAVING COUNT()< clausola having ( SELECT COUNT(*) FROM Maternità subquery WHERE cognome_madre=”Corelli” and nome_madre=”Lina”); Nota: nella clausola having avremmo potuto scrivere
esempio 3 L’operazione di nidificazione può anche essere effettuata in riferimento a differenti condizioni nella stessa query. Vediamo un esempio in riferimento alle tabelle Maternità e Paternità… Si vuole conoscere il nome e cognome della nonna da parte di padre di “Valli Mario”…
esempio 3 - spiegazione Per prima cosa viene eseguita la subquery gialla da cui ricaviamo il cognome del padre di Valli Mario: ( SELECT cognome_padre FROM Paternità WHERE cognome_figlio=”Valli” and nome_figlio=”Mario”) Poi con la subquery rosa estraiamo il nome del padre di Valli Mario ( SELECT nome_padre FROM Paternità WHERE cognome_figlio=”Valli” and nome_figlio=”Mario”);
esempio 3 - spiegazione A questo punto può essere eseguita la query più esterna che ,utilizzando nella where i valori ottenuti dalle subquary , restituirà cognome e nome della nonna ovvero : Porta Piera.
esempio 4
esempio 4 - codice
Come abbiamo già detto, sono definite query scalari quelle il cui risultato coincide con un unico valore. (^) Tale valore si può utilizzare nella condizione where della query più esterna , in sotituzione di un valore costante. (^) E se la query interna generasse più valori per il medesimo attibuto? In questi casi si possono utilizzare i quantificatori All, Any e Some che ci permettono il confronto tra un attributo e una serie di valori.. (^) Vediamo un esempio….