5° Anno TEORIA 4. Introduzione al linguaggio SQL | Page 50

16 . Il linguaggio SQL Vers . 9.3 – Marzo 2024
QUERY ANNIDATE o SUBQUERY
Per rispondere ad interrogazioni o query complesse è possibile strutturare più SELECT . Questo permette di costruire una interrogazione al cui interno sono presenti altre interrogazioni dette sottointerrogazioni o subquery .
Una sottoquery può essere composta a sua volta da altre query . Si viene a creare così una struttura di query annidate .
Per eseguire sottoquery annidate si deve eseguire prima l ’ interrogazione più interna e poi eseguire quella più esterna fino ad arrivare alla query principale .
In una interrogazione che ne richiama un ’ altra al suo interno possiamo distinguere :
• la query principale o query esterna : quella individuata dalla prima parola chiave SELECT incontrata ;
• la query secondaria o sottoquery o subquery o query interna : quella individuata dalla seconda parola chiave SELECT incontrata ( delimitata tra parentesi tonde ).
La sottoquery genera una tabella che si chiama tabella derivata che può essere composta da :
a ) un solo valore ( tabella formata da una sola riga e da una sola colonna ) ed in questo caso si parla di tabella o query scalare ;
b ) una sola riga ( ma più colonne ); in generale , più valori c ) più righe e più colonne .
Una tabella scalare si può utilizzare tutte le volte in cui è richiesto l ’ utilizzo di un singolo valore nella query . E ’ spesso conveniente utilizzare nelle sottoquery la clausola AS per assegnare un nome alla tabella ottenuta
SOTTOINTERROGAZIONI che producono un solo valore
Quando si è sicuri che una sottoquery produce un solo valore come risultato è possibile utilizzare tale sottointerrogazione nelle espressioni della query principale .
SELECT < Lista Attributi > FROM < ListaTabelle > WHERE < Attributo > < OperatoreDiConfronto > (< SubQuery >);
dove < OperatoreDiConfronto > è uno tra <, >, ≤ , ≥ , =, <>. Esempio : consideriamo le seguenti due relazioni Regista ( CodRegista , Cognome , Nome , Compenso )
Film ( CodFilm , Titolo , Budget , CodRegia ) con l ’ attributo " CodRegia " che è chiave esterna ( FK ) sull ’ attributo " CodRegista " della relazione " Regista "
Supponiamo di volere effettuare la seguente interrogazione Query : Mostrare il cognome ed il nome del regista del film “ Via col vento ”
SELECT Regista . Cognome , Regista . Nome FROM Regista , Film WHERE ( Regista . CodRegista = Film . CodRegia ) AND ( Film . Titolo = “ Via con vento ”);
analogo alla SOTTOINTERROGAZIONE o SUBQUERY
SELECT Regista . Cognome , Regista . Nome FROM Regista WHERE CodRegista = ( SELECT CodRegia FROM Film WHERE Titolo = " Via col vento ");
Autore : Rio Chierego ( email : riochierego @ libero . it - sito web : www . riochierego . it ) Pag . 50