Página inicial  

Tema 2. Las consultas simples (III)


Selección de filas


A continuación veremos las cláusulas que nos permiten indicar qué filas queremos visualizar.




Las cláusulas DISTINCT / ALL


Al incluir la cláusula DISTINCT en la SELECT, se eliminan del resultado las repeticiones de filas. Si por el contrario queremos que aparezcan todas las filas incluidas las duplicadas, podemos incluir la cláusula ALL o nada, ya que ALL es el valor que SQL asume por defecto.

Por ejemplo queremos saber los códigos de los directores de oficina.

SELECT dir FROM oficinas
SELECT ALL dir FROM oficinas

Lista los códigos de los directores de las oficinas. El director 108 aparece en cuatro oficinas, por lo tanto aparecerá cuatro veces en el resultado de la consulta.

SELECT DISTINCT dir FROM oficinas

En este caso el valor 108 aparecerá una sola vez ya que le decimos que liste los distintos valores de directores.

La cláusula TOP

La cláusula TOP permite sacar las n primeras filas de la tabla origen. No elige entre valores iguales, si pido los 25 primeros valores pero el que hace 26 es el mismo valor que el 25, entonces devolverá 26 registros en vez de 25 (o los que sea). Siempre se guia por la columna de ordenación, la que aparece en la cláusula ORDER BY o en su defecto la clave principal de la tabla.

Por ejemplo queremos saber los dos empleados más antiguos de la empresa.

SELECT TOP 2 numemp, nombre
FROM empleado
ORDER BY contrato

Lista el código y nombre de los empleados ordenándolos por fecha de contrato, sacando unicamente los dos primeros (serán los dos más antiguos).

SELECT TOP 3 numemp, nombre
FROM empleado
ORDER BY contrato

En este caso tiene que sacar los tres primeros, pero si nos fijamos en las fechas de contrato tenemos 20/10/86, 10/12/86, 01/03/87, 01/03/87, la tercera fecha es igual que la cuarta, en este caso sacará estas cuatro filas en vez de tres, y sacaría todas las filas que tuviesen el mismo valor que la tercera fecha de contrato.

El número de filas que queremos visualizar se puede expresar con un número entero o como un porcentaje sobre el número total de filas que se recuperarían sin la cláusula TOP. En este último caso utilizaremos la cláusula TOP n PERCENT (porcentaje en inglés).

SELECT TOP 20 PERCENT nombre
FROM empleado
ORDER BY contrato

Lista el nombre de los empleados ordenándolos por fecha de contrato, sacando unicamente un 20% del total de empleados. Como tenemos 10 empleados, sacará los dos primeros, si tuviesemos 100 empleados sacaría los 20 primeros.

La cláusula WHERE

La cláusula WHERE selecciona unicamente las filas que cumplan la condición de selección especificada.

En la consulta sólo aparecerán las filas para las cuales la condición es verdadera (TRUE), los valores nulos (NULL) no se incluyen por lo tanto en las filas del resultado. La condición de selección puede ser cualquier condición válida o combinación de condiciones utilizando los operadores NOT (no) AND (y) y OR (ó). En ACCESS2000 una cláusula WHERE puede contener hasta 40 expresiones vinculadas por operadores lógicos AND y OR. Si quieres ver cómo funcionan los operadores lógicos

Para empezar veamos un ejemplo sencillo:

SELECT nombre
FROM empleados
WHERE oficina = 12


Lista el nombre de los empleados de la oficina 12.

SELECT nombre
FROM empleados
WHERE oficina = 12 AND edad > 30

Lista el nombre de los empleados de la oficina 12 que tengan más de 30 años. (oficina igual a 12 y edad mayor que 30)



 
Pag. 2.3
© aulaClic. Todos los derechos reservados. Free Computer tutorials . Prohibida la reproducción por cualquier medio.
Abril-2001.aulaClic.com