Unidad 6. Consultas avanzadas y vistas

En esta unidad, en primer lugar vamos a ver el entorno de trabajo en vista Diseño para creación de consultas.
A continuación, vamos a crear una consulta que incluye todas las tablas de nuestra base de datos.
Después, veremos un ejemplo de cómo utilizar funciones dentro de una consulta.
Por último, veremos qué son las vistas y para qué se utilizan.

Puedes ver en este enlace el video-tutorial de creación de consultas en vista diseño

1. Entorno de trabajo en vista Diseño
En la unidad anterior ya trabajamos en modo Diseño (ver Figura 6.1), pero ahora vamos a ver en detalle todos los elementos de esta forma de realizar consultas.
Primero, podemos observar que la vista Diseño está dividida horizontalemente en tres partes: la parte superior, con la barra de herramientas, la central, donde se muestran las tablas seleccionadas para la consulta, y la inferior, donde cada columna representa cada uno de los campos a mostrar junto con una serie de opciones relacionadas para el filtrado de los resultados.

figura061.jpg

Figura 6.1. Ventana de creación de consultas en modo Diseño

Los botones específicos para consultas de la barra de herramientas que tenemos disponibles son:

  • unidad6_html_m3e0dea5a.png Modo Diseño: activar/desactivar el modo Diseño.
  • unidad6_html_m3122753e.png Ejecutar: muestra el resultado de la consulta sin necesidad de salir del modo de edición. Hay que tener en cuenta que no guarda la consulta.
  • unidad6_html_28b0ab60.png Borrar: borra la consulta y quita todas las tablas de la vista Diseño.
  • unidad6_html_6bad5fa4.png Añadir tablas: permite agregar más tablas a la consulta.
  • unidad6_html_m231dd7c1.png Funciones: activa/desactiva la posibilidad de asociar funciones a los campos.
  • unidad6_html_m4ad20b7d.png Tabla: activa/desactiva en la ventana inferior la fila donde se muestra el nombre de la tabla a la que pertenece el campo.
  • unidad6_html_6ba942a4.png Alias: activa/desactiva en la ventana inferior la fila donde se puede introducir el alias de un campo.
  • unidad6_html_m19666d06.png Valores unívocos: si se activa, aquellas filas que aparecen repetidas varias veces en el resultado de una consulta sólo se mostrarían una vez. Por ejemplo, si hicieramos una consulta que devuelva los géneros de nuestras películas, la fila con el valor “Ciencia-Ficción” aparecería varias veces a menos que activaramos esta casilla y ya sólo aparecería una vez.

En cuanto a los campos y sus distintas opciones tenemos:

  • Campo: muestra los nombres de los campos que se desean visualizar. En el caso de querer mostrar todos los campos de una tabla, tenemos la posibilidad de poner “Nombre de tabla.*” en lugar de poner uno a uno cada uno de los campos.
  • Alias: el valor que se escriba se mostrará en la cabecera de la columna de resultados en lugar del nombre del campo que tiene la tabla.
  • Tabla: muestra la tabla a la que pertenece al campo.
  • Orden: podemos elegir entre ordenar los resultados por los valores de ese campo de forma ascendente o descendente.
  • Visible: si queremos que se muestre ese campo en el resultado estará marcada. Los campos con esta opción desmarcada se utilizan para fijar condiciones de filtrado de los resultados.
  • Función: permiten realizar distintas operaciones sobre los resultados. Hay que tener en cuenta que, una vez que a un campo se le incluye alguna función, el resto de los campos también deben llevar asociada alguna de las funciones disponibles. Concretamente, OOo Base ofrece las siguientes funciones:
  • Agrupar: permite agrupar los resultados a mostrar en función de uno o varios campos.
  • Cantidad: devuelve el número total de filas devueltas que contengan algún valor para ese campo.
  • Promedio: para campos de tipo númerico devuelve la media de los resultados para ese campo.
  • Suma: para campos de tipo númerico devuelve la suma de los resultados para ese campo.
  • Máximo: para campos de tipo númerico devuelve el valor máximo de los resultados para ese campo.
  • Mínimo: para campos de tipo númerico devuelve el mínimo de los resultados para ese campo.
  • Criterio: Especifica criterios de filtro (que un campo contenga un valor mayor, menor, igual, etc..) para el campo. Se pueden incluir varios criterios de filtrado para un campo utilizando las filas “o”. Debido al espacio limitado de cada unidad de este curso, se recomienda, a aquellos alumnos que quieran más información acerca de los criterios de filtrado, examinar el apartado de la Ayuda de OpenOffice.org llamada “Diseñar consulta” donde en el apartado “Formular condiciones de filtrado” aparecen explicadas al detalle.

2. Creación en vista Diseño de consulta sobre varias tablas
Vamos a crear nuestra primera consulta completamente en vista Diseño. En particular, vamos a crear una consulta que nos muestre todos los actores que protagonizan películas junto con los datos de la película, incluido el nombre del género. Es decir, vamos a construir una consulta que utiliza las cuatro tablas de nuestra base de datos.
Para empezar, nos vamos a la ventana principal de OOo Base, a la sección “Consultas” y seleccionamos la tarea “Crear consulta en vista Diseño…”.
Nada más entrar en el modo Diseño, nos mostrará una ventana donde indicar las tablas que queremos incluir en la consulta que se va a crear. En nuestro caso, vamos a añadir las cuatro disponibles y veremos como OOo Base nos muestra las relaciones existentes automáticamente (ver Figura 6.2).

unidad6_html_m3702ca56_1.png

Figura 6.2. Selección de tablas de la consulta

Los primeros cuatro campos que vamos a incluir son los de la tabla Interpretes como se muestra en la Figura 6.3.

unidad6_html_69d6839c_1.png

Figura 6.3. Inclusión de campos de la tabla Interpretes

A continuación vamos a especificar que queremos que los resultados de la consulta se muestren ordenados por los apellidos y el nombre de los intérpretes (ver Figura 6.4).

unidad6_html_467a3bf1_1.png

Figura 6.4. Ordenación de resultados por apellidos y nombre

Para incluir los campos de la tabla Peliculas vamos a seleccionar “Peliculas:*” y así no tenemos que incluir los campos uno a uno (ver Figura 6.5).

unidad6_html_m6d942379_1.png

Figura 6.5. Inclusión de todos los campos de la tabla Interpretes

Para seleccionar los campos de la tabla Interpretes no hemos utilizado la posibilidad “Interpretes.*” porque es necesario seleccionar cada campo individualmente, ya que vamos a establecer algún criterio de ordenación en función de alguno de los campos de la tabla. Como en nuestro caso vamos a mostrar los resultados ordenados en función de los apellidos y el nombre de los intérpretes (ver Figura 6.4) necesitamos seleccionar uno a uno cada campo de Interpretes.
Para terminar, vamos a seleccionar el campo Nombre de la tabla Generos y, en el alias, vamos a poner “NombreGenero”, para distinguirlo de los campos ya seleccionados, Nombre de la tabla Interpretes y Genero de la tabla Peliculas. (ver Figura 6.6.).

unidad6_html_m63eefda6_1.png

Figura 6.6. Inclusión del campo Nombre de Generos

Salvamos la consulta como “ConsultaTotal” y al ejecutarla el resultado es el de la Figura 6.7.

unidad6_html_m6aa2157_1.png

Figura 6.7. Resultado de la consulta ConsultaTotal

3. Creación de consultas que incluyen funciones
Vamos a crear una consulta que realiza operaciones sobre los resultados. Así, vamos a crear una consulta que muestre el nombre de cada género almacenado y el total de películas que tenemos de cada género. Es decir, el objetivo es realizar una consulta sobre Generos y Peliculas de manera que agrupemos las filas devueltas en función de cada género para así poder contarlas y poder saber el número de películas asociadas a cada uno de ellos. El resultado de nuestra consulta, con las filas que tenemos actualmente en Generos y Peliculas, debe ser como el de la Figura 6.8.

unidad6_html_m54cc4e3d.png

Figura 6.8 Generos y total de películas de cada género

Para empezar, elegimos las tablas sobre las que vamos a realizar la consulta, Generos y Peliculas (ver Figura 6.9).

unidad6_html_42862ae2_1.png

Figura 6.9. Tablas de la consulta

Los campos que necesitamos son, por una lado Nombre de Generos, que es sobre el que agruparemos los resultados devueltos y, por otro, un campo de la tabla Peliculas que estemos seguros que siempre tendrá un valor (no estará vacío) para cada fila de Peliculas. Por ejemplo, podemos elegir el campo Id_pelicula que siempre va a tener valor para cada película. Los campos seleccionados se muestran en la figura 6.10.

unidad6_html_m4f9643b3_1.png

Figura 6.10. Campos seleccionados de ambas tablas

A continuación, debemos asociar la función correspondiente a cada uno de los dos campos. En primer lugar, hemos dicho que queremos agrupar los resultados en función de cada género, para ello vamos a incluirle la función “Agrupar” asociada al campo Nombre de Generos. Y, en segundo lugar, lo que queremos es contar las películas relacionadas con cada género. Esto último lo conseguimos asociando la función “Cantidad” al campo Id_pelicula de Peliculas (ver Figura 6.11).

unidad6_html_m6bc8f627_1.png

Figura 6.11. Inclusión de funciones necesarias en cada campo

Guardamos entonces la consulta como “Peliculas de cada Genero” y al lanzarla nos encontramos una pantalla como la de la Figura 6.12.

unidad6_html_m631618de.png

Figura 6.12. Resultado de la consulta Peliculas de cada Genero

Como vemos, la cabecera con el total de películas está mostrando la función que estamos utilizando junto con el nombre del campo. Si queremos que el resultado aparezca como el que mostrabamos en la Figura 6.8., es decir, con una cabecera significativa, debemos añadir el alias “Total de Peliculas” (ver Figura 6.13).

unidad6_html_md2e6b4e_1.png

Figura 6.13. Inclusión de alias para el total de películas

4. Vistas. Consultas sobre vistas
Las vistas son un tipo especial de consultas almacenadas que, a nivel de bases de datos, se tratan como una tabla más. Es decir, hasta ahora hemos visto que sólo podemos realizar consultas sobre nuestras tablas de la base de datos pero ¿qué ocurre si necesitamos realizar una consulta no sobre una tabla sino sobre los resultados de otra consulta? La respuesta es que debemos convertir la consulta en una vista para que se pueda manejar como si de una tabla se tratara.
Para ver las beneficios de usar vistas, vamos a realizar una consulta que nos devuelva el valor medio de las películas asociadas a cada género. Esta consulta no se puede realizar directamente sobre las tablas Generos y Peliculas sino sobre la consulta Peliculas de cada Genero una vez convertida en vista.
Para convertir una consulta en una vista nos situamos en la ventana principal de OOo Base en la sección “Consultas” y seleccionamos la consulta que queramos convertir con el botón derecho del ratón. Del menú que se despliega seleccionamos la opción “Crear como vista” (ver Figura 6.14).

unidad6_html_79105192_1.png

Figura 6.14. Convertir una consulta en una vista

figura0615.jpg

Figura 6.15. Vista creada en la sección Tablas

Se nos despliega entonces una ventana donde tenemos que poner un nombre a la vista, escribimos “PeliculasCadaGenero” y aceptamos. Ya hemos convertido la consulta en una vista y podemos ver que ya es así si nos situamos en la sección “Tablas” de la ventana principal (ver Figura 6.15). Podemos observar que se usa un icono distinto para representar vistas y distinguirlas de las tablas.
Una vez que ya tenemos la vista, vamos a crear una consulta sobre ella. Para empezar, vemos que al entrar en vista Diseño para crear una nueva consulta ya nos aparece PeliculasCadaGenero como si de una tabla más se tratara y la elegimos como única tabla de la consulta (ver Figura 6.16).

unidad6_html_2f0ab114_1.png

Figura 6.16. Inclusión de la vista PeliculasCadaGenero en la consulta a crear

Como sólo queremos que nos devuelva el valor medio de las películas de cada género seleccionamos el campo Total de Peliculas y le asociamos la función “Promedio” junto con el alias “Media de cada género” (ver Figura 6.17).

unidad6_html_501ffab0_1.png

Figura 6.17. Inclusión del valor medio del campo Total de Peliculas

Para ver que la consulta hace lo que esperamos en la propia vista Diseño (ver Figura 6.18), la lanzamos antes de guardarla utilizando el botón “Ejecutar” y, si devuelve el valor esperado, ya hemos terminado.

unidad6_html_m32ebe94e_1.png

Figura 6.18. Resultado del valor medio de películas por cada género

5. Ejercicios propuestos
1.Crear la consulta “ConsultaTotal” del apartado 2.
2.Crear la consulta “Peliculas de cada Genero” del apartado 3.
3.Crear la vista “PeliculasCadaGenero” del apartado 4.
4.Crear una consulta que devuelva la media del número de películas de cada género.

25 Respuestas a “Unidad 6. Consultas avanzadas y vistas

  1. Quiero hacer una consulta en la que me pregunte por un campo, introduzca, por ejemplo, un nombre y me aparezca los campos relacionados con ese nombre

    Por ejemplo: campos nombre, apellidos, teléfono. Introducir el apellido y que aparezca el nombre y el teléfono

  2. hola,he seguido todos los pasos tal y como vienen y al ejecutar la consultaTotal me sale en blanco. ¿Que me ha podido ocurrir?

    Gracias de nuevo

  3. Hola, esta muy bien el tutorial pero me gustaria saber como se realiza una resta de fechas para darme el resultado en dias y poder lo mostrar en el formulario. Muchas gracias.

  4. Hola, estoy manejando OpenOffice base, y me gustaria que me dijerais que habeis conseguido hacer una consulta con suma de varias columnas en access es facilisimo pero en OpenOffice base me estoy liando un poco Gracias

  5. Hola, estoy empezando con el OpenOffice base y lo que en access es facil, aquí no lo veo por ninguna parte. Por ejemplo, actualizar una tabla con datos de otra tabla a través de una consulta de actualización. No soy capaz de hacerlo en OpenOffice base. Podríais ayudarme.
    Gracias

  6. IRMA TU PROBLEMA ES QUE NECESITAS LLENAR LA TABLA PROTAGONISTAS CON LOS CAMPOS PELICULA E INTERPRETE
    AHI TIENES QUE PONER LOS ID DE CADA UNO PA QUE SE PUEDAN RELACIONAR YA QUE AL NO ESTAR LLENOS NO HAY RELACION Y POR ESO APARECEN EN BLANCO OK SUERT CUELQUIER DUDA CONTACTAME ATTE. BRAYAN

  7. Es posible utilizar este software para administrar una gran hemeroteca? Estoy hablando de un periódico de más de 80 años, con miles de diarios publicados y tal cientos de miles de artículos y fotografías. Existe alguna experiencia de este tipo?

  8. Buenas tardes y felicitaciones por el tutorial.
    Mi pregunta:
    ¿Cómo hago para que la diseñar una consulta, en vez de introducir el criterio en el campo de criterios, me lo pida en un cuadro de diálogo?
    En Acces, entre corchetes […] pongo la pregunta y se abre un cuadro de diálogo para introducir el parámetro.
    Gracias y un saludo.

    • Prueba con :=

      Saludos.

    • Para que te pida el criterio de busqueda en un cuadro de diálogo cuando ejecutes la consulta debes acceder a la edicion de la consulta y poner el el campo criterio del campo, que deseas filtrar, el nombre con el que desees que muestre el cuadro de dialogo antecedido por : ejemplo :Buecar_x_Nombre.

  9. Hola. tengo varias dudas aserca de creacion de consultas en base y em pezare por preguntar coo se hace una consulta de eliminacion que ye me cance de buscar un boton o un paso del asistente donde me muestre esa opcion.

    gracias

  10. Roberto, para que te pida el valor de los parametros debes colocar en criterio :parametro, ejemplo :ID
    esta hará que te pregunte en un cuadro de dialogo por el valor para hacer la consulta, ahora no dejes espacios en el parametro porque no te funcionara

  11. Tengo un problema con los -formularios- al intentar agregar nuevos datos. Tengo varias casillas que son -listas-, y me sale el mensaje siguiente:

    Error al insertar nuevo registro de datos.
    Integrity constraint violation – no parent SYS_FK_345 table: proyecto in statement [INSERT INTO “cajon” (y las demas casillas que hay que rellenar)

  12. Hola, en este capítulo se me presenta el error siguiente:
    Cuando genero la consulta de los géneros, me sale el número y no el nombre. He revisado y lo tengo bien (es decir, la tabla generos tiene los siguientes campos: Id_Genero y Nombre).
    Qué puedo haber hecho mal?
    Gracias

  13. Hola, tengo un problema a la hora de sumar campos numéricos de dos tablas. Me explico, hay 25 campos numéricos que pueden estar o no vacíos. El problema es que intento sumar esos 25 campos y el resultado es “NADA”. Por lo visto interpreta los campos vacíos como texto y no me los suma, ya que si algún registro continene números en los 25 campos entonces si que me los suma. No se si me estoy explicando demasiado bien, así que resumiré. Hay alguna forma de sumar en una consulta campos NUMERICOS contengan números e ignore los vacíos?.

  14. Buenos dias, Llevo un par de dias intentando hacer una consulta update para pasar los datos de una tabla a otra, y en todo intento OO me da error de sintaxis, he estado buscado mas informacion sobre este tema, pero para OO no me aparece nada, ¿hay alguna forma de realizar esta consulta?
    Muchas gracias-

  15. Deseo añadir un campo a una consulta que sea el resultado de multiplicar un campo por otro pero no se hacerlo. En Access se utilizaban los corchetes para multiplicar el nombre de los campos. Aquí no sé cómo hacerlo

  16. Quiero poder hacer una consulta que me pregunte por ID pero que sea variable, y se ingrese por teclado, y luego me muestre los resultados, pero sin tener que editar la tabla, sino que en el modo de ejecución

  17. Muy buena la paguina me esta ayudando mucho gracias.
    Pero tengo una duda, necesito hacer un base de datos para control de materiales la tengo implementa de calc pero creo que seria mejor hacer algo parecido en Base pero mi problema es que no se si se pude utilizar formulas en las entradas. por ejemplo:
    que un campo se complete solo con PrecioUnitario x Cantidad tal como se hace en Calc.

  18. En una base de datos que consta:
    PROVEEDORES Y ARTÌCULOS ETC
    COMO PUEDO CONSULTAR :
    1º lOS PROVEEDORES QUE NO TIENEN EMAIL
    2º LOS QUE TIENEN MAS DE UN TELÈFONO

    3º LOS TICKETS QUE CORRESPONDEN A LAS VENTAS DE PANTALONES
    4º LOS VESTIDOS VENDIDOS QUE NO SEAN DE LA TALLA XL NI NEGROS
    5ºMostra para cada artìculo el 0 % de beneficio obtenido
    GRACIAS

  19. Para iniciar el OOoBase con un dialogo determinado, el cual hace uso de formularios e informes.
    Logro ejecutar el Dialogo al inicio del OOo3, pero al acceder a los Botones que ejecutan las consultas me devuelve el error de que no se puede acceder a los componentes de la base de datos.
    Los macros los tenia asignados al Archivo de base y por ende me daba un error en la ejecución del macro..
    migre los macros y diálogos respectivos.
    PERO AUN ASI NO LOGRO QUE ME RELACIONE LA BASE AL DIALOGO .

  20. Pingback: Tutorial de Base de datos – OpenOffice.org « HiperEidon

  21. me gustaria saber como te se hacen los criterios. mi profesor de tecnoligia me lo pide y no lo se hacer. sola berta . besos i gracias por contestar

  22. ¿Por qué cuando realizo una consulta el resultado sale por triplicado?
    ¿A alguien le ha pasado?
    Gracias

  23. Pingback: Creación de consultas avanzadas | KND: Los Chicos del Barrio Equipo 4

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s