SQL Sottoquery | |
|
SQL >
SQL Avanzato >
Sottoquery
In SQL, è possibile inserire un’istruzione all’interno di un’altra. Quando ciò accade nelle istruzioni WHERE o HAVING, si ha un costrutto di sottoquery. La sintassi è la seguente: SELECT "nome_di_colonna_1"
FROM "nome_della_tabella_1" WHERE "nome_di_colonna_2" [operatore di confronto] (SELECT "nome_di_colonna_3" FROM "nome_della_tabella_2" WHERE "condizionale"); [operatore di confronto] potrebbero essere operatori di uguaglianza come, ad esempio: =, >, <, >=, <=. Potrebbe anche essere un operatore di testo del tipo "LIKE". La parte in rosso è considerata come la “query interna”, mentre la parte in verde la "query esterna ". Si proceda utilizzando lo stesso esempio utilizzato nel paragrafo relativo alle unioni nel linguaggio SQL: Tabella Store_Information
Tabella Geography
Si desidera utilizzare una sottoquery per trovare le vendite di tutti i negozi presenti nella regione Ovest. Per realizzare questa operazione si utilizza la seguente istruzione SQL: SELECT SUM (Sales) FROM Store_Information
WHERE Store_Name IN (SELECT Store_Name FROM Geography WHERE Region_Name = 'West'); Risultato:
In questo esempio, anziché unire direttamente le due tabelle e aggiungere successivamente solo la quantità di vendite per i negozi della regione Ovest, si utilizza prima una sottoquery per trovare quali negozi si trovano nella regione Ovest, quindi si realizza la somma della quantità delle vendite realizzate in questi negozi. Nell’esempio precedente, la query interna viene eseguita per prima e il suo risultato viene introdotto nella query esterna. Questo tipo di sottoquery viene denominato sottoquery semplice. Se la query interna dipende da quella esterna, si avrà una sottoquery correlata. Di seguito, viene mostrato un esempio di sottoquery correlata: SELECT SUM(a1.Sales) FROM Store_Information a1
WHERE a1.Store_name IN (SELECT Store_Name FROM Geography a2 WHERE a2.Store_Name = a1.Store_Name); Si noti la clausola WHERE presente nella query interna, in cui la condizione implica una tabella presente nella query esterna.
Copyright © 2024 1keydata.com Tutti i diritti riservati |