Select

La selezione dei campi da una sorgente dati ODBC o da un provider OLE DB viene eseguita utilizzando le istruzioni SQL SELECT standard. Tuttavia, l'ambito nel quale le istruzioni SELECT vengono accettate dipende dal driver ODBC o dal provider OLE DB utilizzato.

Syntax:  

Select [all | distinct | distinctrow | top n [percent] ] fieldlist

From tablelist

[where criterion ]

[group by fieldlist [having criterion ] ]

[order by fieldlist [asc | desc] ]

[ (Inner | Left | Right | Full) join tablename on fieldref = fieldref ]

 

Inoltre, talvolta è possibile concatenare diverse istruzioni SELECT in un'unica istruzione utilizzando l'operatore union:

selectstatement Union selectstatement

 

L'istruzione SELECT viene interpretata dal driver ODBC o dal provider OLE DB e, pertanto, possono verificarsi deviazioni dalla sintassi generale SQL a seconda delle caratteristiche dei driver ODBC o del provider OLE DB, ad esempio:

  • Talvolta as non è consentito, vale a dire aliasname deve seguire immediatamente fieldname.
  • Talvolta as è obbligatorio se si utilizza un aliasname.
  • Talvolta l'utilizzo di distinct, as,where, group by, order by o union non è supportato.
  • Il driver ODBC talvolta non accetta tutte le diverse virgolette elencate in precedenza.
Nota: La descrizione qui fornita dell'istruzione SQL SELECT non è completa. Ad esempio, le istruzioni SELECT possono essere nidificate, più unioni possono essere inserite in un'unica istruzione SELECT, a volte il numero di funzioni consentito nelle espressioni può essere molto alto e così via.

Arguments:  

Argomento Descrizione
distinct distinct è un predicato che viene utilizzato se le combinazioni duplicate dei valori nei campi selezionati devono essere caricate una sola volta.
distinctrow distinctrow è un predicato che viene utilizzato se i record duplicati presenti nella tabella sorgente devono essere caricati una sola volta.
fieldlist fieldlist ::= (*| field ) {, field }

Un elenco dei campi da selezionare. L'utilizzo del simbolo * come elenco dei campi indica tutti i campi della tabella.

fieldlist ::= field {, field }

Un elenco di uno o più campi separati da virgole.

field ::= ( fieldref | expression ) [as aliasname ]

L'espressione può essere, ad esempio, una funzione numerica oppure una funzione di stringa basata su uno o più campi diversi. Alcuni degli operatori e delle funzioni generalmente accettati sono: +, -, *, /, & (concatenazione di stringhe), sum(fieldname), count(fieldname), avg(fieldname)(average), month(fieldname) e così via. Consultare la documentazione del driver ODBC per ulteriori informazioni.

fieldref ::= [ tablename. ] fieldname

tablename e fieldname sono stringhe di testo identiche a ciò che implicano. Se contengono spazi, ad esempio, devono essere incluse fra doppie virgolette diritte.

La clausola as viene utilizzata per assegnare un nuovo nome al campo.
from tablelist ::= table {, table }

Elenco di tabelle da cui vengono selezionati i campi.

table ::= tablename [ [as ] aliasname ]

tablename può essere inserito o meno tra virgolette.

From

where where è una clausola utilizzata per dichiarare se un record deve essere incluso o meno nella selezione.

criterion è un'espressione logica che a volte può risultare molto complessa. Alcuni degli operatori consentiti includono: funzioni e operatori numerici, =, <> o #(diverso da), >, >=, <, <=, and, or,not, exists,some, all,in, oltre alle nuove istruzioni SELECT. Consultare la documentazione del driver ODBC o del provider OLE DB per ulteriori informazioni.

group by group by è una clausola utilizzata per aggregare (raggruppare) più record in uno solo. All'interno di un gruppo, per un determinato campo, tutti i record devono avere lo stesso valore o il campo può essere utilizzato solo all'interno di un'espressione, ad esempio una somma o una media. L'espressione basata su uno o più campi viene definita nell'espressione del simbolo del campo.
having having è una clausola utilizzata per qualificare i gruppi analogamente al modo in cui la clausola where viene utilizzata per qualificare i record.
order by order by è una clausola utilizzata per dichiarare la sequenza di ordinamento della tabella risultante dall'istruzione SELECT.
join join è un qualificatore che dichiara se diverse tabelle devono essere unite in una sola. I nomi dei campi e delle tabelle devono essere delimitati da virgolette se contengono spazi vuoti o lettere dell'alfabeto nazionale. Quando lo script viene generato automaticamente da QlikView, le virgolette utilizzate sono quelle preferite dal driver ODBC o dal provider OLE DB specificato nella definizione della sorgente dati nell'istruzione Connect.

Example 1:  

SELECT * FROM `Categories`;

Example 2:  

SELECT `Category ID`, `Category Name` FROM `Categories`;

Example 3:  

SELECT `Order ID`, `Product ID`,

`Unit Price` * Quantity * (1-Discount) as NetSales

FROM `Order Details`;

Example 4:  

SELECT `Order Details`.`Order ID`,

Sum(`Order Details`.`Unit Price` * `Order Details`.Quantity) as `Result`

FROM `Order Details`, Orders

where Orders.`Order ID` = `Order Details`.`Order ID`

group by `Order Details`.`Order ID`;

See also: