Select

La sélection de champs à partir d'une source de données ODBC ou d'un fournisseur OLE DB s'effectue au moyen d'instructions SELECT SQL standard. Cependant, l'acceptation des instructions SELECT dépend du pilote ODBC ou du fournisseur OLE DB utilisé.

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 ]

 

Il est par ailleurs possible, dans certains cas, de concaténer plusieurs instructions SELECT en une seule à l'aide d'un opérateur union :

selectstatement Union selectstatement

 

L'instruction SELECT est interprétée par le pilote ODBC ou le fournisseur OLE DB. Il peut donc arriver que des écarts par rapport à la syntaxe SQL générale se produisent, suivant les capacités des pilotes ODBC ou du fournisseur OLE DB, par exemple :

  • as n'est pas toujours autorisé, autrement dit aliasname doit suivre immédiatement fieldname.
  • as est parfois obligatoire si un nom d'alias (aliasname) est utilisé.
  • distinct, as, where, group by, order by et union ne sont pas toujours pris en charge.
  • Le pilote ODBC n'accepte pas toujours tous les types de guillemets indiqués ci-dessus.
Remarque: Ceci n'est pas une description complète de l'instruction SQL SELECT. Les instructions SELECT peuvent, par exemple, être imbriquées. Il est aussi possible d'effectuer plusieurs jointures dans une instruction SELECT, le nombre de fonctions autorisées dans les expressions est parfois très grand, etc.

Arguments:  

Argument Description
distinct distinct est un prédicat utilisé si les combinaisons de valeurs en double dans les champs sélectionnés ne doivent être chargées qu'une seule fois.
distinctrow distinctrow est un prédicat utilisé si les enregistrements en double dans la table source ne doivent être chargés qu'une seule fois.
fieldlist fieldlist ::= (*| field ) {, field }

Liste des champs à sélectionner. L'utilisation du symbole * comme liste de champs signifie inclure tous les champs de la table.

fieldlist ::= field {, field }

Liste d'un ou de plusieurs champs, séparés par des virgules.

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

L'expression peut, par exemple, être une fonction numérique ou une fonction de chaîne basée sur un ou plusieurs autres champs. Certains des opérateurs et des fonctions généralement acceptés sont : +, -, *, /, & (concaténation de chaînes), sum(fieldname), count(fieldname), avg(fieldname)(average), month(fieldname), etc. Pour plus d'informations, consultez la documentation du pilote ODBC.

fieldref ::= [ tablename. ] fieldname

tablename et fieldname sont des chaînes de texte identiques à ce qu'elles représentent. Elles doivent être mises entre guillemets doubles droits si elles contiennent des espaces, par exemple.

La clause as est utilisée pour donner un nouveau nom au champ.
from tablelist ::= table {, table }

Liste des tables à partir desquelles les champs doivent être sélectionnés.

table ::= tablename [ [as ] aliasname ]

La chaîne tablename ne doit pas obligatoirement être mise entre guillemets.

From

where where est une clause utilisée pour indiquer si un enregistrement doit être inclus ou pas dans la sélection.

criterion est une expression logique qui peut parfois être très complexe. Certains des opérateurs acceptés sont : opérateurs et fonctions mathématiques, =, <> ou #(non égal), >, >=, <, <=, and, or, not, exists, some, all, in ainsi que les nouvelles instructions SELECT. Pour plus d'informations, consultez la documentation du pilote ODBC ou du fournisseur OLE DB.

group by group by est une clause utilisée pour agréger (grouper) plusieurs enregistrements en un seul. Dans un groupe, pour un champ donné, soit tous les enregistrements ont la même valeur, soit le champ ne peut être utilisé que dans une expression, comme par exemple une somme ou une moyenne. L'expression basée sur un ou plusieurs champs est définie dans l'expression du symbole de champ.
having having est une clause utilisée pour qualifier des groupes comme la clause where sert à qualifier des enregistrements.
order by order by est une clause utilisée pour spécifier l'ordre de tri de la table obtenue par l'instruction SELECT.
join join est un qualificateur indiquant que plusieurs tables doivent être jointes en une seule. Les noms des champs et des tables doivent être mis entre guillemets s'ils contiennent des espaces vides ou des lettres de jeux de caractères nationaux. Lorsque le script est généré automatiquement par Qlik Sense, les guillemets utilisés sont les guillemets favoris du pilote ODBC ou du fournisseur OLE DB spécifié dans la définition de la source de données de l'instruction 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: