Sie sind auf Seite 1von 8

SELECT ciudad, regin, (ventas-

Lista la ciudad, regin y el superavit de cada


objetivo) AS superavit
oficina.
FROM oficinas

SELECT idfab, idproducto, descripcion, De cada producto obtiene su


(existencias * precio) AS valoracion fabricante, idproducto, su descripcin y
FROM productos el valor del inventario

Lista el nombre, mes y ao del contrato de


cada vendedor.
SELECT nombre, MONTH(contrato),
La funcin MONTH() devuelve el mes de
YEAR(contrato)
una fecha
FROM repventas
La funcin YEAR() devuelve el ao de una
fecha

SELECT oficina, 'tiene


Listar las ventas en cada oficina con el formato: 22
ventas de ', ventas
tiene ventas de 186,042.00 ptas
FROM oficinas

SELECT nombre, oficina, SELECT nombre, oficina,


contrato es contrato
FROM empleados equivalente a FROM empleados
ORDER BY oficina ORDER BY 2

SELECT nombre,
numemp, oficinarep Obtiene un listado alfabtico de los
FROM empleados empleados.
ORDER BY nombre

SELECT nombre,
Obtiene un listado de los empleados por
numemp, contrato
orden de antiguedad en la empresa (los de ms
FROM empleados
antiguedad aparecen primero).
ORDER BY contrato

SELECT nombre,
Obtiene un listado de los empleados
numemp,ventas
ordenados por volmen de ventas sacndo los
FROM empleados
de menores ventas primero.
ORDER BY ventas

Si queremos podemos alterar ese orden utilizando la


clusula DESC (DESCendente), en este caso el orden ser el inverso al ASC.

Ejemplos:

SELECT nombre, Obtiene un listado de los empleados por


numemp, contrato orden de antiguedad en la empresa empezando

1
FROM empleados por los ms recientemente incorporados.
ORDER BY contrato
DESC

SELECT nombre,
Obtiene un listado de los empleados
numemp,ventas
ordenados por volmen de ventas sacando
FROM empleados
primero los de mayores ventas.
ORDER BY ventas DESC

Tambin podemos ordenar por varias columnas, en este caso se indican


las columnas separadas por comas.
Se ordenan las filas por la primera columna de ordenacin, para un mismo valor
de la primera columna, se ordenan por la segunda columna, y as sucesivamente.

La clusula DESC o ASC se puede indicar para cada columna y as utilizar


una ordenacin distinta para cada columna. Por ejemplo ascendente por la
primera columna y dentro de la primera columna, descendente por la segunda
columna.

Ejemplos:

SELECT region, ciudad,


Muestra las ventas de cada oficina ,
ventas
ordenadas por orden alfabtico de regin y
FROM oficinas
dentro de cada regin por ciudad.
ORDER BY region, ciudad

SELECT region, ciudad,


(ventas - objetivo) AS Lista las oficinas clasificadas por regin y
superavit dentro de cada regin por superavit de modo
FROM oficinas que las de mayor superavit aparezcan las
ORDER BY region, 3 primeras.
DESC

Lista los cdigos de los directores


SELECT dir FROM oficinas de las oficinas. El director 108
SELECT ALL dir FROM aparece en cuatro oficinas, por lo
oficinas tanto aparecer cuatro veces en el
resultado de la consulta.

En este caso el valor 108 aparecer


SELECT DISTINCT dir FROM
una sola vez ya que le decimos que
oficinas
liste los distintos valores de directores.

SELECT TOP 2 numemp, Lista el cdigo y nombre de los


nombre empleados ordenndolos por fecha de
FROM empleado contrato, sacando unicamente los dos

2
ORDER BY contrato primeros (sern los dos ms
antiguos).

En este caso tiene que sacar los


tres primeros, pero si nos fijamos en
las fechas de contrato tenemos
SELECT TOP 3 numemp,
20/10/86, 10/12/86, 01/03/87,
nombre
01/03/87, la tercera fecha es igual que
FROM empleado
la cuarta, en este caso sacar estas
ORDER BY contrato
cuatro filas en vez de tres, y sacara
todas las filas que tuviesen el mismo
valor que la tercera fecha de contrato.

El nmero de filas que queremos visualizar se puede expresar con un


nmero entero o como un porcentaje sobre el nmero total de
filas que se recuperaran sin la clusula TOP. En este ltimo caso
utilizaremos la clusula TOP n PERCENT (porcentaje en ingls).

Lista el nombre de los empleados


ordenndolos por fecha de contrato,
SELECT TOP 20 PERCENT
sacando unicamente un 20% del total
nombre
de empleados. Como tenemos 10
FROM empleado
empleados, sacar los dos primeros,
ORDER BY contrato
si tuviesemos 100 empleados sacara
los 20 primeros.

La clusula WHERE

La clusula WHERE selecciona unicamente


las filas que cumplan la condicin de seleccin especificada.

En la consulta slo aparecern las filas para las cuales la condicin es


verdadera (TRUE), los valores nulos (NULL) no se incluyen por lo tanto
en las filas del resultado. La condicin de seleccin puede ser
cualquiercondicin vlida o combinacin de condiciones utilizando los
operadores NOT (no) AND (y) y OR ().

Para empezar veamos un ejemplo sencillo:

SELECT nombre
FROM empleados Lista el nombre de los empleados
WHERE oficina = 12 de la oficina 12.

SELECT nombre Lista el nombre de los empleados


FROM empleados de la oficina 12 que tengan ms de 30

3
WHERE oficina = 12 AND aos. (oficina igual a 12 y edad mayor
edad > 30 que 30)

SELECT numemp, nombre Lista los empleados cuyas ventas


FROM empleados superan su cuota
WHERE ventas > cuota

SELECT numemp, nombre Lista los empleados contratados antes


FROM empleados del ao 88 (cuya fecha de contrato sea
WHERE contrato < anterior al 1 de enero de 1988).
#01/01/1988# Ojo!!, las fechas entre almohadillas #
# deben estar con el formato
mes,dia,ao aunque tengamos definido
otro formato para nuestras fechas.

SELECT numemp, nombre Este ejemplo obtiene lo mismo que el


FROM empleados anterior pero utiliza la funcin year().
WHERE YEAR(contrato) < Obtiene los empleados cuyo ao de la
1988 fecha de contrato sea menor que 1988.

SELECT oficina Lista las oficinas cuyas ventas estn


FROM oficinas por debajo del 80% de su objetivo.
WHERE ventas < objetivo * Hay que utilizar siempre el punto
0.8 decimal aunque tengamos definida la
coma como separador de decimales.

SELECT oficina Lista las oficinas dirigidas por el


FROM oficinas empleado 108.
WHERE dir = 108

Test de rango (BETWEEN).


Examina si el valor de la expresin est comprendido entre los dos
valores definidos por exp1 y exp2.
Tiene la siguiente sintaxis:

SELECT numemp, nombre Lista los empleados cuyas ventas


FROM empleados estn comprendidas entre 100.000 y
WHERE ventas BETWEEN 500.00
100000 AND 500000

SELECT numemp, nombre Obtenemos lo mismo que en el


FROM empleados ejemplo anterior. Los parntesis son

4
WHERE (ventas >= 100000) opcionales.
AND (ventas <= 500000)

Test de pertenencia a conjunto (IN)


Examina si el valor de la expresin es uno de los
valores incluidos en la lista de valores.
Tiene la siguiente sintaxis:

SELECT numemp, nombre, Lista los empleados de las oficinas 12,


oficina 14 y 16
FROM empleados
WHERE oficina IN (12,14,16)

SELECT numemp, nombre Obtenemos lo mismo que en el


FROM empleados ejemplo anterior. Los parntesis son
WHERE (oficina = 12) OR opcionales.
(oficina = 14) OR (oficina =
16)

Test de valor nulo (IS NULL)

Una condicin de seleccin puede dar como resultado el valor verdadero


TRUE, falso FALSE o nulo NULL.

Cuando una columna que interviene en una condicin de


seleccin contiene el valor nulo, el resultado de la condicin no es
verdadero ni falso, sino nulo, sea cual sea el test que se haya utilizado.
Por eso si queremos listar las filas que tienen valor en una determinada
columna, no podemos utilizar el test de comparacin, la condicin oficina
= null devuelve el valor nulo sea cual sea el valor contenido en oficina. Si
queremos preguntar si una columna contiene el valor nulo debemos
utilizar un test especial, el test de valor nulo.
Tiene la siguiente sintaxis:

Ejemplos:

SELECT oficina, ciudad Lista las oficinas que no tienen


FROM oficinas director.
WHERE dir IS NULL

SELECT numemp, nombre Lista los empleados asignados a


FROM empleados alguna oficina (los que tienen un valor
WHERE oficina IS NOT en la columna oficina).

5
NULL

Test de correspondencia con patrn (LIKE)

Se utiliza cuando queremos utilizar caracteres comodines para formar


el valor con el comparar.
Tiene la siguiente sintaxis:

Los comodines ms usados son los siguientes:


? representa un carcter cualquiera
* representa cero o ms caracteres
# representa un dgito cualquiera (0-9)

Ejemplos:

SELECT numemp, nombre Lista los empleados cuyo nombre


FROM empleados empiece por Luis (Luis seguido de cero
WHERE nombre LIKE o ms caracteres).
'Luis*'

SELECT numemp, nombre Lista los empleados cuyo nombre


FROM empleados contiene Luis, en este caso tambin
WHERE nombre LIKE saldra los empleados Jos Luis (cero
'*Luis*' o ms caracteres seguidos de LUIS y
seguido de cero o ms caracteres).

SELECT numemp, nombre Lista los empleados cuyo nombre


FROM empleados contenga una a como tercera letra (dos
WHERE nombre LIKE '??a*' caracteres, la letra a, y cero o ms
caracteres.

En este tema vamos a estudiar


las consultas multitabla llamadas as
porque estn basadas en ms de una
tabla.

El SQL de Microsoft Jet 4.x soporta dos


grupos de consultas multitabla:

- la unin de tablas

- la composicin de tablas

6
La unin de tablas

Esta operacin se utiliza cuando tenemos dos tablas con las mismas columnas y
queremos obtener una nueva tabla con las filas de la primera y las filas de la segunda. En
este caso la tabla resultante tiene las mismas columnas que la primera tabla (que son las
mismas que las de la segunda tabla).

Por ejemplo tenemos una tabla de libros nuevos y una tabla de libros antiguos y queremos
una lista con todos los libros que tenemos. En este caso las dos tablas tienen las mismas
columnas, lo nico que vara son las filas, adems queremos obtener una lista de libros (las
columnas de una de las tablas) con las filas que estn tanto en libros nuevos como las que
estn en libros antiguos, en este caso utilizaremos este tipo de operacin.

Cuando hablamos de tablas pueden ser tablas reales almacenadas en la base de


datos o tablas lgicas (resultados de una consulta), esto nos permite utilizar la operacin con
ms frecuencia ya que pocas veces tenemos en una base de datos tablas idnticas en cuanto
a columnas. El resultado es siempre una tabla lgica.

Por ejemplo queremos en un slo listado los productos cuyas existencias sean iguales a
cero y tambin los productos que aparecen en pedidos del ao 90. En este caso tenemos unos
productos en la tabla de productos y los otros en la tabla de pedidos, las tablas no tienen las
mismas columnas no se puede hacer una union de ellas pero lo que interesa realmente es el
identificador del producto (idfab,idproducto), luego por una parte sacamos los cdigos de los
productos con existencias cero (con una consulta), por otra parte los cdigos de los productos
que aparecen en pedidos del ao 90 (con otra consulta), y luego unimos estas dos tablas
lgicas.

El operador que permite realizar esta operacin es el operador UNION.

La composicin de tablas

La composicin de tablas consiste en concatenar filas de una tabla con filas de otra. En
este caso obtenemos una tabla con las columnas de la primera tabla unidas a
las columnas de la segunda tabla, y las filas de la tabla resultante
son concatenaciones de filas de la primera tabla con filas de la segunda tabla.

7
El ejemplo anterior quedara de la siguiente forma con la composicin:

A diferencia de la unin la composicin permite obtener una fila con datos de las dos tablas,
esto es muy til cuando queremos visualizar filas cuyos datos se encuentran en dos tablas.

Por ejemplo queremos listar los pedidos con el nombre del representante que ha hecho el
pedido, pues los datos del pedido los tenemos en la tabla de pedidos pero el nombre del
representante est en la tabla de empleados y adems queremos que aparezcan en la misma
lnea; en este caso necesitamos componer las dos tablas (Nota: en el ejemplo expuesto a
continuacin, hemos seleccionado las filas que nos interesan).

Existen distintos tipos de composicin, aprenderemos a utilizarlos todos y a elegir el tipo


ms apropiado a cada caso.

Los tipos de composicin de tablas son:

. El producto cartesiano

. El INNER JOIN

. El LEFT / RIGHT JOIN

Das könnte Ihnen auch gefallen