< Anterior | Siguiente >

Adición de uniones, una condición de consulta y una cláusula GROUP BY

En este ejercicio, se restringen los resultados de la consulta a los clientes que tienen vídeos alquilados actualmente y a los vídeos que están alquilados actualmente. También se limitan los resultados de la consulta a un cliente específico cuyo nombre se especifica cuando se ejecuta la consulta. Y por último, se organizan los resultados de la consulta por el día de la semana que se deben devolver los vídeos alquilados. En cada día de la semana, los vídeos se ordenarán por título de vídeo y, para cada título de vídeo, por nombre de cliente.

Unión de tablas

Una operación de unión permite recuperar datos de dos o más tablas basándose en los valores de columna coincidentes. Los datos en las tablas están enlazados con un resultado individual. Se necesitan dos uniones para esta consulta. El resultado de la consulta debe incluir las entradas de las tablas RENTALS y CUSTOMERS que tengan valores de columna CUST_ID coincidentes. El resultado de la consulta también debe incluir las entradas de las tablas RENTALS y VIDEOS que tengan ID de vídeo (valores de la columna VID_ID) coincidentes.

Para unir tablas:

  1. En el panel Tablas, pulse con el botón derecho del ratón sobre la cabecera de la tabla R y pulse Crear unión en el menú emergente.
  2. En la ventana Crear unión en Fuente, realice las siguientes selecciones:
    1. En la lista Tabla (alias), pulse RENTALS (R).
    2. En la lista Columna, pulse CUST_ID.
  3. En Destino, realice las siguientes selecciones:
    1. En la lista Tabla (alias), pulse CUSTOMERS (C).
    2. En la lista Columna, pulse CUST_ID.
  4. Pulse Aceptar. Un conector de unión aparece entre las dos columnas.
  5. En el panel Tablas, arrastre el puntero desde la columna VID_ID en la tabla R (RENTALS) a la columna VID_ID en la tabla V (VIDEOS).
Observe el panel Fuente SQL para ver las uniones en el código fuente:
    FROM
       XMLTEST.CUSTOMERS AS C JOIN XMLTEST.RENTALS AS R ON C.CUST_ID = R.CUST_ID 
       JOIN XMLTEST.VIDEOS AS V ON R.VID_ID = V.VID_ID

En el panel Tablas, las dos uniones se han creado tal como se muestra a continuación:

Uniones de tabla

Para cambiar el tipo de unión (por ejemplo, de la unión interna por omisión a una unión externa izquierda, derecha o completa) en el panel Tablas, pulse con el botón derecho sobre el conector, pulse Especificar tipo de unión en el menú emergente y seleccione el tipo de unión que desee en la ventana Especificar unión.

Creación de una condición de consulta

A continuación, la consulta necesita una condición de consulta para extraer sólo las filas de resultados que contengan el nombre de cliente que desea. Puede añadir condiciones a la consulta utilizando la página Condiciones en el panel Diseño.

Para crear una condición de consulta:

  1. Pulse el separador Condiciones para ver la página Condiciones.
  2. En la primera fila, efectúe una doble pulsación en la celda de la columna Columna y pulse C.NAME en la lista.
  3. En la misma fila, efectúe una doble pulsación en la celda de la columna Operador y pulse el operador =.
  4. En la misma fila, efectúe una doble pulsación en la celda de la columna Valor y especifique :CUSTNAME. Dos puntos seguido de un nombre de variable es la sintaxis SQL de una variable que se sustituirá por un valor cuando ejecute la consulta. Verá cómo esto funciona cuando ejecute la consulta SQL.
La página Condiciones será parecida a la siguiente imagen:

Panel Diseño - página Condiciones

Adición de una cláusula GROUP BY

Se agrupará la consulta por el día de la semana, después por el título y después por el nombre de cliente.
Para crear una cláusula GROUP BY en el Constructor de consultas SQL, utilice la página Grupos del panel Diseño. En esta vista, también puede crear más agrupaciones avanzadas en los resultados de la consulta utilizando expresiones de columna, grupos anidados, conjuntos de agrupaciones (sólo en DB2) y las funciones de agrupación ROLLUP y CUBE (en Oracle y DB2).

Para añadir una cláusula GROUP BY:

  1. En el panel Diseño, pulse el separador Grupos.
  2. Añada la función DAYOFWEEK como columna de resultados.
    1. En la tabla Columna, efectúe una doble pulsación en la primera fila, pulse Construir expresión en la lista y, a continuación, pulse Intro.
    2. En la página Tipos de expresión del asistente, pulse Función y, a continuación, pulse Siguiente. Se abrirá la página Constructor de expresiones de funciones.
    3. En la lista Seleccione una categoría de función, pulse Fecha y hora.
    4. En la lista Seleccione una función, pulse DAYOFWEEK.
    5. En la lista Seleccione una signatura de función, pulse DAYOFWEEK(DATE) --> INTEGER. La signatura de función muestra que la función requiere un argumento.
    6. En la columna Valor de la tabla de argumentos, pulse la celda, pulse R.DATE en la lista y, a continuación, pulse Intro.
    7. Pulse en Finalizar. La función DAYOFWEEK se muestra en la primera celda de la tabla Columna.
  3. En la segunda fila de la tabla Columna, seleccione la columna V.TITLE en la lista y, en la tercera fila, seleccione C.NAME. La página Grupos será parecida a la siguiente imagen:

    Panel Diseño - página Grupos

La consulta está ahora completa. La consulta será parecida a la siguiente en el Constructor de consultas SQL:

Consulta completada

< Anterior | Siguiente >

Comentarios