Sub Query

Gli argomenti di questa pagina

  • Definizione di sub-query
  • Perchè le sub-query

Definizione di sub-query

Una sub-query non è altro che una SELECT all'interno di un'altra istruzione. Le sub-query possono essere nidificate anche a profondità notevoli.
Le sub-query possono essere inserite ovunque il linguaggio SQL ammetta un nome di un campo o di una tabella.
Ogni SELECT restituisce logicamente una tabella formata da righe e colonne. Nel caso delle sub-query è necessario fare una distinzione: esse infatti possono restituire un valore singolo (scalare), una singola riga, una singola colonna, oppure un insieme di righe e colonne (una tabella virtuale).

La sub-query permette di utilizzare i risultati di una Query come parte di una Query. La Query principale normalmente è chiamata Query esterva, Le altre contenute nella Query esterna sono dette Query interne. In una Query è possibile scrivere molte sub-query ed in una stessa sub-query è possibile annidare altre sub-query. In tutti questi casi è importante che ogni sub-query racchiusa nell'altra sia circondata da una coppia di parentesi tonde.
Come vedremo qui di seguito, in una Query è possibile usare sub-query ovunque sia possibile usare un nome di campo o di una tabella.

Esistono alcuni tipi si sub-query:

  • sub-query scalare:è una Query che restituisce un resultset composto da una sola colonna e non più di una sola riga.
    Può essere usata ovunque sia ammesso l'uso di una colonna o un valore di colonna, sia nella clausola SELECT che nella clausola WHERE della Query principale, ma il suo uso è più frequente come operatore di confronto.
  • sub-query di colonna: è una Query che restituisce un resultset composto da una sola colonna e zero o più righe.
    Può essere utilizzata come filtro solo nella clausola WHERE della Query principale specialmente come argomento dell' operatore IN.
  • sub-query a riga singola: ha la particolarità di restituire sempre una sola riga di dati.
  • sub-query di tabella:è una Query che restituisce un resultset composto da da una o più colonne e zero o più righe (una tabella virtuale a tutti gli effetti).
    Può essere usata ovunque sia ammesso un nome di tabella quindi soprattutto nella clausola FROM.
  • sub-query correlate: è una Query che contiene un riferimento a una tabella che compare anche nella query esterna, cioè è una Query che utilizza i valori dalla query esterna nella clausola WHERE. La Query correlata viene valutata una volta per ciascuna riga elaborata dalla Query esterna.

L'idea base dell'uso di sub-query è registrare il risultato in una tabella temporanea interna le cui colonne sono tutte indicizzate.

Perchè le sub-query

E' possibile ricorrere all'uso di una sub-query quando non è possibile ottenere una risposta da una normale Query. La sub-query è come una normale Query ma è racchiusa da una coppia di parentesi tonde. La sub-query ci aiuta a formulare domande molto complesse al DB cioè quando non è possible estrarre informazioniin maniera semplice ed immediata.
La sub-query passa informazioni alla Query esterna che, di solito, li usa nelle condizioni che seguono la clausola WHERE.

I principali vantaggi dell'uso di subquerie sono:
Esse consentono di creare Query strutturate in modo che sia possibile isolare ogni parte di un'istruzione e renderle più comprensivili.
Esse forniscono modi alternativi per eseguire operazioni che altrimenti richiederebbero complesse joins e unions.
In molti casi le subquerie sono più leggibili rispetto a join complessi o union.

 

 



settore tecnico il sito di lorettabweb il Forum di sostegno
il forum il forum il forum