tema 9 clausulas avanzadas de seleccion

5

Click here to load reader

Upload: antonio-gonzaga

Post on 08-Aug-2015

33 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Tema 9 Clausulas Avanzadas de Seleccion

Formación 2002. Tema 9. Cláusulas Avanzadas de Selección.

Prácticas de Diseño y Gestión de Bases de Datos Page 1 of 5

TEMA 9 CLAÚSULAS AVANZADAS DE SELECCIÓN

1. Combinación Externa. 2. Autouniones. 3. Union, Minus, Intersect. 4. Reglas de uso. 5. Ejercicios.

Page 2: Tema 9 Clausulas Avanzadas de Seleccion

Formación 2002. Tema 9. Cláusulas Avanzadas de Selección.

Prácticas de Diseño y Gestión de Bases de Datos Page 2 of 5

1. COMBINACIÓN EXTERNA (OUTER JOIN). • Ya hemos tratado el concepto de combinación de tablas. Existe una variedad de

combinación de tablas que se llama OUTER JOIN, y que nos permite seleccionar filas de una tabla aunque éstas no tengan ninguna correspondencia con las filas de la otra tabla con la que se combina.

• Sintáxis: SELECT tabla1.colum1, tabla1.colum2.., tabla2,colum1, tabla2.colum2.. FROM tabla1,tabla2 WHERE tabla1.colum1 = tablas.colum2(+):

• Veamos un ejemplo sencillo.

Supongamos que queremos visualizar todos los articulos y en qué tiendas fueron vendidos. Imaginemos que la información que tenemos es la que se visualiza a continuación.

NUMERO NOMBRE 1 IMPRESORA 2 BOLIGRAFO 3 LAMPARA

• Si ahora hacemos la siguiente consulta:

SELECT articulos.art_num, articulos.art_nom, ventas.vnt_tda FROM articulos, ventas WHERE articulos.art_num = ventas.vnt_art; La salida de esta consulta será la siguiente:

NUMERO NOMBRE TIENDA 1 IMPRESORA 5 2 BOLIGRAFO 7

• Como observamos existe un artículo que no fue vendido en ninguna tienda. El

artículo 3. Si también deseamos incluir este artículo en la tabla de salida, sólo tendremos que incluir (+).

SELECT articulos.art_num, articulos.art_nom, ventas.vnt_tda FROM articulos, ventas WHERE articulos.art_num = ventas.vnt_art(+);

NUMERO NOMBRE TIENDA 1 IMPRESORA 5 2 BOLIGRAFO 7 3 LAMPARA

TIENDA ARTICULO VENDIDO 5 1 7 2

Page 3: Tema 9 Clausulas Avanzadas de Seleccion

Formación 2002. Tema 9. Cláusulas Avanzadas de Selección.

Prácticas de Diseño y Gestión de Bases de Datos Page 3 of 5

• Internamente se hace el producto cartesiano de las filas de las tables, y se reduce ese producto cartesiano si existe cláusula WHERE.

2. AUTOUNIONES. • Si las uniones las hacemos sobre la misma tabla, tendremos que usar alias. • Una autounión une filas de una tabla a filas de la misma tabla. • Delante del where hay que poner los alias de las tablas. • Los alias se pueden usar cuando las tablas sean diferentes.

3. UNION, MINUS, INTERSECT. • Los operadores Union, Minus, Intersect son operadores de conjuntos. • Los conjuntos son las filas resultantes de cualquier sentencia SELECT válida que

permiten combinar los resultados de varios SELECT para obtener un único resultado.

• Union devuelve las filas que están en una tabla más las filas que están en la otra tabla. Si es común una fila a las dos tablas, el resultado de la union devuelve solo una fila. Equivale a la operación lógica OR.

• Sintáxis Union:

SELECT col1, col2... FROM tabla1 WHERE condición UNION SELECT col1, col2... FROM tabla2 WHERE condición;

• Existe una cláusula que es UNION ALL, que significa que cualquier duplicación

de filas que se de en el resultado final aparecerá en la consulta.

• Intersect devuelve aquellas filas de la primera tabla que están en la segunda tabla. Equivale a la operación lógica AND.

• Sintáxis Intersect:

SELECT col1, col2... FROM tabla1 WHERE condición INTERSECT SELECT col1, col2... FROM tabla2 WHERE condición;

• Minus devuelve aquellas filas de la primera tabla que no están en la segunda tabla. Las filas duplicadas se reducirán a una fila única antes de que empiece la comparación con el otro conjunto.

• Sintáxis Minus:

SELECT col1, col2... FROM tabla1 WHERE condición MINUS SELECT col1, col2... FROM tabla2 WHERE condición;

Page 4: Tema 9 Clausulas Avanzadas de Seleccion

Formación 2002. Tema 9. Cláusulas Avanzadas de Selección.

Prácticas de Diseño y Gestión de Bases de Datos Page 4 of 5

4. REGLAS DE USO. a) Las columnas de las dos consultas se relacionan en orden, de izquierda a derecha. b) Los nombres de columnas de la primera sentencia no tienen por qué coincidir con

los de la segunda sentencia., pero si sus tipos de datos. c) Las SELECT necesitan tener el mismo número de columnas.

Page 5: Tema 9 Clausulas Avanzadas de Seleccion

Formación 2002. Tema 9. Cláusulas Avanzadas de Selección.

Prácticas de Diseño y Gestión de Bases de Datos Page 5 of 5

EJERCICIOS

43. Seleccionar los artículos de color rojo y visualizar su número, nombre y peso así como el nombre del proveedor ordenados según su peso. 44. Hacer el producto cartesiano entre artículos y proveedores de aquellos artículos de color rojo. 45. Obtener una lista de clientes y de la fecha en que se han realizado sus compras cuyo número de clientes sea >5 y <12. Si el cliente no ha efectuado ninguna compra deberá aparecer en la lista. 46. Obtener una lista de todos los artículos cuyo precio de compra es superior al precio del artículo 8 ordenado por precio de compra. 47. Mostrar aquellos clientes que no han realizado ninguna compra.