16. Il linguaggio SQL Vers. 11.0 – Gennaio 2026
UTILIZZO di Subquery nella clausola FROM
E ' possibile utilizzare una sottointerrogazione( o sottoquery o subquery) anche nella clausola FROM, con questa sintassi:
SELECT....... FROM(< SubQuery >) [ AS ] nome...
Notate che è obbligatorio assegnare un nome alla subquery, per poterla referenziare nelle altre parti della query.
Ad esempio:
SELECT t1.*, Tabella2.*
FROM( SELECT A1, A2 FROM Tabella1 WHERE A3 > 5) AS t1, Tabella2 WHERE t1. K1 = Tabella2. K2;
In questo caso l ' output della subquery viene chiamato " t1 " ed il riferimento è usato sia nella SELECT sia nella condizione di EQUI-JOIN.
Esempio di sottoquery che produce una tabella derivata
Consideriamo le seguenti tre relazioni relative all’ utilizzo di laboratori da parte di una classe di studenti:
Laboratorio( CodLab, Denominazione, NumPosti,) Classe( CodClasse, NumAlunni)
Utilizza( CodClasse, CodLab,) con l’ attributo " CodClasse " che è chiave esterna( FK) sull’ attributo " CodClasse " della relazione " Classe " con l’ attributo " CodLab " che è chiave esterna( FK) sull’ attributo " CodLab " della relazione " Laboratorio "
Consideriamo la seguente interrogazione: Query: Vogliamo conoscere la denominazione dei laboratori utilizzati dalla classe " A45 " Partendo dall’ EQUI-JOIN tra le tabelle Laboratorio e Utilizza
SELECT Laboratorio. Denominazione FROM Laboratorio, Utilizza WHERE( Laboratorio. CodClasse = Utilizza. CodClasse);
è possibile, anche per ragioni di efficienza, " anticipare " la selezione per CodClasse = " A45 " sulla tabella " Utilizza " prima di effettuare il join giungendo alla seguente subquery:
SELECT Denominazione FROM Laboratorio,( SELECT CodLab
FROM Utilizza SUB-QUERY
WHERE CodClasse = " A45 ") AS t1
WHERE Laboratorio. CodLab = t1. CodLab;
Autore: Rio Chierego( email: riochierego @ libero. it- sito web: www. riochierego. it) Pag. 56