Select

La selección de campos desde una fuente de datos ODBC o proveedor OLE DB se hace mediante sentencias SQL SELECT estándar. Sin embargo, si las sentencias SELECT son aceptadas o no, depende del driver ODBC o proveedor OLE DB empleado.

Sintaxis:  

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 ]

 

Además, a veces se pueden concatenar varias sentencias SELECT en una sola mediante el uso de un operador union:

selectstatement Union selectstatement

 

La sentencia SELECT es interpretada por el driver ODBC o proveedor OLE DB, así que podrían ocurrir desviaciones de la sintaxis SQL general dependiendo de las capacidades de los drivers ODBC o el proveedor OLE DB, por ejemplo:

  • as a veces no se permite, aliasname debe ir inmediatamente después de fieldname.
  • as a veces es obligatorio si se usa un aliasname.
  • distinct, as,where, group by, order by, o union a veces no se permiten.
  • El driver ODBC a veces no acepta todos los tipos de comillas listados arriba.
Nota: Por favor, tenga en cuenta que no se trata de una descripción exhaustiva de la sentencia SQL SELECT. Por ej. Las sentencias SELECT pueden anidarse, pueden hacerse varios join en una sentencia SELECT, el número de funciones permitidas en expresiones a veces es muy grande, etc...

Argumentos:  

Argumento Descripción
distinct distinct es un predicado que se utiliza si las combinaciones duplicadas de valores en los campos seleccionados sólo debieran cargarse una vez.
distinctrow distinctrow es un predicado que se utiliza si los registros duplicados en la tabla de origen sólo debieran cargarse una vez.
fieldlist fieldlist ::= (*| field ) {, field }

Una lista de los campos que se van a seleccionar. El asterisco * indica la totalidad de campos de la tabla.

fieldlist ::= field {, field }

Una lista de uno o más campos, separados por comas.

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

La expresión puede ser una función numérica o de cadena basada en uno o varios campos. Algunos de los operadores y funciones aceptados habitualmente son: +, -, *, /, & (concatenación de cadena), sum(fieldname), count(fieldname), avg(fieldname)(average), month(fieldname), etc. Véase la documentación del driver ODBC para más información.

fieldref ::= [ tablename. ] fieldname

Las cadenas tablename y fieldname son cadenas de texto idénticas a lo que su propio nombre indica. Deben estar entre comillas dobles rectas si contienen p.ej. espacios.

La cláusula as se usa para asignar un nombre nuevo al campo.
from tablelist ::= table {, table }

La lista de las tablas de las que se van a seleccionar los campos.

table ::= tablename [ [as ] aliasname ]

El tablename puede o no estar entre comillas.

Vea: From

where where es una cláusula empleada para establecer si un registro debe ir incluido en la selección o no.

criterion es una expresión lógica que a veces puede ser muy compleja. Algunos de los operadores aceptados son: operadores numéricos y funciones, =, <> o #(no igual), >, >=, <, <=, and, or,not, exists,some, all,in y también nuevas sentencias SELECT. Vea la documentación del driver ODBC o proveedor OLE DB si desea más información.

group by group by es una cláusula que sirve para agregar (agrupar) varios registros en uno. Dentro de un grupo, para un determinado campo, todos los registros deben tener el mismo valor, o el campo sólo podrá utilizarse desde dentro de una expresión, p.ej. como una suma o una media. La expresión basada en uno o varios campos se define en la expresión del símbolo de campo.
having having es una cláusula que sirve para calificar grupos de la misma manera que se usa la cláusula where para calificar registros.
order by order by es una cláusula que se emplea para establecer el criterio de ordenación de la tabla resultante de la sentencia SELECT.
join join es un cualificador que establece si varias tablas se van a unir en una. Los nombres de campo y los nombres de tabla deben estar entre comillas si contienen espacios en blanco o letras de los juegos de caracteres nacionales. Cuando el script es generado automáticamente por QlikView, las comillas empleadas serán las preferidas por el driver ODBC u OLE DB, según lo especificado en la definición de la fuente de datos de la sentencia Connect.

Ejemplo 1:  

SELECT * FROM `Categories`;

Ejemplo 2:  

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

Ejemplo 3:  

SELECT `Order ID`, `Product ID`,

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

FROM `Order Details`;

Ejemplo 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`;

Vea también: