Linguaggio SQL: Le query annidate e complesse
Come abbiamo gia detto nell’articolo precedente, il risultato di una query è una tabella che rispetta le specifiche inserite dall’utente nelle varie clausole accessorie. Tale tabella non ha nessuna differenza con una qualsiasi altra tabella nel database, se non che per il contenuto. Per questo nulla vieta di utilizzare una query all’interno di un’altra query.
Le query utilizzate come valore all’interno di clausole di un’altra query vengono chiamate query annidate (o nidificate). Non devono essere confuse con le query legate dagli operatori insiemistici, poichè quelle rappresentano due query diverse; in questo caso, si ha che il codice di una query e inserito all’interno di una clausola di un’altra query.
La query annidata puo essere inserita in una clausola FROM, e quindi valutata come tabella, oppure in una clausola WHERE, dove ne vengono utilizzati gli attributi per creare delle condizioni. In ogni caso, all’utente finale verra presentato il risultato globale della query, ma non quello della query annidata, in quando essa viene processata come un parametro operativo.
Questo tipo di costrutto, sebbene piuttosto complesso, permette delle operazioni piu complesse eliminandone i passaggi intermedi. Richiedono tuttavia particolare attenzione in fase di costruzione.
Un esempio di struttura di una query annidata posta all’interno della clausola FROM è mostrato nella figura precedente, mentre per una query annidata inserita tra le condizioni della clausola WHERE si ha il costrutto di figura seguente. In questi due esempi si nota una delle differenze fondamentali tra le query annidate a seconda della clausola in cui sono inserite: nel primo esempio la query annidata viene presa e trattata come una tabella, nel secondo caso, essendo all’interno di un blocco condizionale, la sua funzione sara quella di restituire dei valori confrontabili con altri per verificare la condizione richiesta.