Diseño de consulta

Módulo
Contenido
Índice 🔎︎

# Diseñar una consulta

La vista Diseño de consulta permite la creación y edición de consultas de bases de datos.

Para acceder a esta orden…

En la ventana de un archivo de base de datos, pulse en el icono Consultas; a continuación, elija Editar ▸ Editar

La mayoría de las bases de datos utilizan consultas para filtrar u ordenar las tablas de bases de datos para que muestren los registros en el equipo. Las vistas proporcionan las mismas funciones que las consultas, pero en el servidor. Si la base de datos se encuentra en un servidor que admite vistas, puede utilizar dichas vistas para filtrar los registros del servidor a fin de acelerar el tiempo de visualización.

Al seleccionar el comando Crear vista de la ficha Tablas de un documento de base de datos, verá la ventana Diseño de vista que es similar a la ventana Diseño de consulta que se describe aquí.

Cuando se crea una consulta se conserva la estructura de la ventana de Diseño de consultas, lo cual no sucede cuando se crea una vista.

## La vista Diseño

Para crear una consulta, haga clic en el icono Consultas de un documento de base de datos y, a continuación, haga clic en Crear consulta en vista Diseño.

La consulta se define en el panel inferior de la vista Diseño. Para definir una consulta, especifique los nombres de campos de la base de datos que se deben incluir, así como los criterios de visualización de los campos. Para reorganizar las columnas en el panel inferior de la vista Diseño, arrastre la cabecera a otra posición, o bien, seleccione la columna y oprima ⌘Ctrl
+ ↑, ↓, ← o →.

En la parte superior de la ventana de la vista Diseño de consulta, se muestran los iconos de las barras Diseño de consulta y Diseño.

Si desea probar una consulta, haga doble clic en el nombre de la consulta en el documento de base de datos. El resultado de la consulta se muestra en una tabla similar a la vista de origen de datos. Nota: la tabla que se muestra es temporal.

### Teclas de la vista Diseño de consulta

Tecla | Función
F4 | Vista previa
F5 | Ejecutar consulta
F7 | Agregar tabla o consulta

## Examinar

Cuando abra el diseño de consulta por vez primera, aparecerá un cuadro de diálogo en el que debe primero seleccionar la tabla o consulta que será la base de su consulta nueva.

Haga doble clic en los campos para agregarlos a la consulta. Arrastre y coloque para definir relaciones.

Durante el diseño de una consulta no es posible modificar las tablas seleccionadas.

### Borrar tablas

Para borrar una tabla de la vista de diseño, pulse en el margen superior de la ventana de la tabla y active el menú contextual. Con la orden Borrar borrará la tabla de la vista de diseño. Otra opción es pulsar la tecla (Supr).

### Desplazar tablas y modificar su tamaño

Las tablas y su tamaño pueden definirse a voluntad. Para desplazar una tabla se pulsa con el ratón el margen superior y se lleva a la posición deseada. Para aumentar o disminuir el tamaño de presentación, arrastre el borde hacia una de las esquinas.

## Relaciones entre tablas

Las relaciones de datos que pueden haber entre un nombre de campo de una tabla y uno de otra tabla pueden utilizarse para las consultas.

Si, por ejemplo, dispone de una hoja de cálculo de artículos identificados mediante un número de artículo y una hoja de cálculo de clientes en la que se registran todos los artículos pedidos por un cliente mediante el número de artículo correspondiente, entonces existe una relación entre los campos de datos "número de artículo". Si desea crear una consulta que devuelva todos los artículos pedidos por un cliente, deberá recuperar datos de dos hojas de cálculo. Para ello deberá indicar a LibreOffice cuál es la relación entre los datos contenidos en ambas hojas.

Para hacerlo, pulse un campo de datos de una tabla (p. ej. el campo de datos "Referencia" de la tabla de clientes) y, con la tecla del ratón pulsada, arrástrelo al campo de datos de la otra tabla ("Referencia" de la tabla de artículos). Cuando suelte el botón del ratón, se muestra una línea que vincula los dos campos en las dos ventanas. La condición de que el contenido de los dos campos de datos debe ser idéntico se introduce en la consulta SQL resultante.

Sólo se puede crear una consulta basada en varias hojas relacionadas si se utiliza LibreOffice como interfaz para una base de datos relacional.

En una consulta no es posible acceder a tablas de bases de datos distintas. Las consultas de varias tablas sólo pueden crearse dentro de una misma base de datos.

### Especificar el tipo de enlace

Al hacer una doble pulsación en la línea de conexión entre dos campos vinculados o al acceder a la orden de menú Insertar - Relación nueva, se puede especificar el tipo de vínculo en el diálogo Relaciones.

Además puede oprimir la tecla Tab hasta seleccionar la línea y, a continuación, Mayús + F10 para mostrar el menú contextual y seleccionar la orden Editar. Algunas bases de datos admiten solo algunos de los tipos de unión posibles.

### Eliminar relaciones

Para eliminar los vínculos entre dos tablas, seleccione con el ratón la línea de vínculo y pulse la tecla (Supr).

Como alternativa, puede eliminar las entradas respectivas en el apartado Campos involucrados del cuadro de diálogo Relaciones. O bien, puede oprimir el tabulador hasta que el vector de conexión quede destacado y luego oprimir Mayús + F10 para abrir el menú contextual y seleccionar la orden Eliminar.

## Definir una consulta

Seleccione condiciones para definir la consulta. Cada columna de la tabla de diseño acepta un campo de datos para la consulta. Las condiciones de una fila se vinculan con una expresión lógica Y.

### Definir campo de datos

Seleccione en primer lugar todos los nombres de campo de las tablas que desee agregar a la consulta. Para ello utilice la técnica de arrastrar y soltar o haga una doble pulsación en los nombres de campo de la ventana de la tabla. Mediante arrastrar y soltar, utilice el ratón para arrastrar un nombre de campo de la ventana de la tabla al área inferior de la ventana de diseño de consulta. Al hacerlo puede decidir en qué columna desea agregar el campo. Seleccione un nombre de campo haciendo una doble pulsación en él. Se agregará a la siguiente columna libre.

### Eliminar nombres de campos

Para eliminar un campo de datos de la consulta, pulse con el ratón en la cabecera de la columna del campo y active la orden Eliminar del menú contextual de la columna.

### Guardar consulta

Guarde la consulta con el icono Guardar de la barra Estándar. Un diálogo solicita la asignación de un nombre para la consulta. Si la base de datos admite esquemas, también se puede especificar un esquema.

#### Esquema

Introduzca el nombre del esquema que se asigna a la consulta o vista de tabla.

#### Nombre de la consulta / vista de tabla

Introduzca el nombre de la consulta o vista de tabla.

### Filtrado de datos

Para filtrar los datos de la consulta, establezca las preferencias deseadas en el área inferior de la vista Diseño. Dispone de las siguientes líneas:

#### Campo

Escriba el nombre del campo de datos al que hace referencia en la consulta. Los parámetros de las filas inferiores hacen referencia a este campo. Si activa una celda pulsando en ella con el ratón verá un botón de flecha que le permitirá seleccionar un campo. La opción "Nombre de tabla.*" selecciona todos los campos de datos y los criterios son válidos para todos los campos de la tabla.

#### Alias

Especifica un alias. Este alias se mostrará en la consulta en lugar del nombre de campo. De esta forma se pueden emplear etiquetas de columna definidas por el usuario. Por ejemplo, si el campo de datos se denomina NºRef. y desea que en la consulta aparezca NúmRef., escriba NúmRef. como alias.

En SQL los alias se definen como se muestra a continuación:

SELECT column AS alias FROM table.

Por ejemplo:

SELECT "Ref." AS Referencia FROM "Artículos"

#### Tabla

Aquí se muestra la tabla de base de datos correspondiente al campo de datos seleccionado. Si activa una celda haciendo clic en ella, se muestra una flecha que permite seleccionar otra tabla de la consulta actual.

#### Ordenar

Si presiona la celda, puede elegir entre las opciones de ordenamiento: ascendente, descendente y sin ordenamiento. Los campos de texto se ordenarán alfabéticamente, los campos numéricos en orden númerico. Para la mayoría de las bases de datos, el administrador puede definir las opciones de ordenamiento.

#### Visible

Si selecciona la propiedad Visible para un campo de datos, dicho campo se ve en la consulta. Si sólo se emplea un campo de datos para formular una condición, no es necesario que se muestre.

#### Criterios

Especifica los criteriosde filtro del contenido del campo de datos.

#### o

Introduzca en cada fila un criterio adicional para el filtrado. Los diferentes criterios de una columna se vinculan por una relación del tipo O.

Por otra parte, es posible introducir una fila para funciones mediante el menú contextual de los títulos de fila en el área inferior del diseño de consulta:

### Funciones

Las funciones que se puedan ejecutar dependen de la base de datos.

Si trabaja con la base de datos HSQL, el cuadro de lista en la fila Función incluye las siguientes opciones:

Opción | SQL | Efecto
Sin función |  | No se ejecuta ninguna función
Promedio | AVG | Calcula la media aritmética de un campo.
Count | COUNT | Determina el número de registros en la tabla. Los campos vacíos pueden contarse (a) o no (b). a) COUNT(*): Si introduce un asterisco como argumento se calculan todos los registros de datos de la tabla. b) COUNT(column): Si introduce un campo de datos como argumento, sólo se calculan los campos cuyos campos de datos contienen un valor. Los valores cero (campos vacíos) no se tienen en cuenta.
Maximum | MAX | Calcula el valor máximo de un campo.
Mínimo | MIN | Calcula el valor mínimo de un campo.
Sum | SUM | Calcula la suma de valores de los campos correspondientes.
Agrupar | GROUP BY | Agrupa los datos de la consulta según el campo seleccionado. Las funciones se ejecutan según los grupos especificados. En SQL, esta opción corresponde a la cláusula GROUP BY. Si se agrega un criterio, esta entrada aparece en SQL HAVING.

También se pueden introducir llamadas a funciones directamente en una expresión SQL. La sintaxis es:

SELECT FUNCTION(column) FROM table.

En SQL la función para sumar, por ejemplo, se presenta del modo siguiente:

SELECT SUM("Precios") FROM "Artículos".

A excepción de la función Agrupar, las funciones anteriores se conocen como funciones de totalización. Estas funciones permiten realizar resúmenes a partir de los resultados del cálculo de los datos. Además son posibles funciones que no aparecen en el cuadro de lista. Estas dependen del sistema de base de datos usado y el controlador utilizado por Base.

Para utilizar otras funciones no encontradas en el cuadro de lista, debe ingresarlas en Campo.

También se pueden asignar alias a las funciones. Para que en el título de la columna no se muestre el nombre de la función, introduzca el nombre deseado en Alias.

En la instrucción SQL la activación de la función se presenta con la forma siguiente:

SELECT FUNCTION() AS alias FROM table

Ejemplo:

SELECT COUNT(*) AS cantidad FROM "Artículos"

Al ejecutar una función no es posible añadir más columnas a la consulta, a menos que a dichas columnas se les aplique la función Agrupar.

Ejemplos

En el siguiente ejemplo se realiza una consulta en dos tablas: una tabla "Artículos" con el campo "Referencia" y otra tabla, "Proveedores", con el campo "nombre_proveedor". Además, ambas tablas disponen de un campo de datos común llamado "num_proveedor".

Para crear una consulta que contenga todos los proveedores que suministran más de tres artículos, es necesario seguir los pasos siguientes:

1. Introducir las tablas "Artículos" y "Proveedores" en el diseño de la consulta.

2. Relacionar los campos "num_proveedor" de ambas tablas, excepto si ya se ha establecido una relación entre ellas.

3. Pulsar dos veces en el campo "Referencia" de la tabla "Artículos". Mostrar la fila Función mediante el menú contextual y seleccionar la cantidad de la función.

4. Introducir >3 como criterio y ocultar el campo visible.

5. Haga clic dos veces en el campo "nombre_proveedor" de la tabla "Proveedores" y seleccionar la función Agrupar.

6. Ejecute la consulta.

Si en la tabla "Artículo" existe el campo "Precio" (precio unitario de un artículo) y "Num_proveedor" (proveedor del artículo), el precio medio que aplica un proveedor se calcula con la siguiente consulta:

1. Insertar la tabla "Artículos" en Diseñar consulta.

2. Pulsar dos veces en el campo "Precio" y en el campo "Num_proveedor".

3. Activar la fila Función y seleccionar la función Promedio en el campo "Precio".

4. Opcionalmente se puede introducir el alias "Promedio" en la fila (sin comillas).

5. Seleccionar Agrupar en el campo "Num_proveedor".

6. Ejecute la consulta.

Existen los comandos de menú y símbolos siguientes:

### Funciones

Muestra u oculta una fila para seleccionar funciones.

### Nombre de tabla

Muestra u oculta la fila del nombre de la tabla.

### Nombre del Alias

Muestra u oculta la fila del alias.

### Valores unívocos

Aplica a la consulta únicamente valores inequívocos. Se refiere a los registros que contienen datos que aparecen varias veces en los campos seleccionados. Si se ha seleccionado la opción Valores inequívocos sólo podrá ver un registro que cumpla los criterios de la consulta (DISTINCT). En caso contrario, podrá ver todos los registros correspondientes a los criterios de la consulta (ALL).

Por ejemplo, si el nombre «Pérez» aparece varias veces en la base de datos de direcciones, elija la opción Valores unívocos para especificar en la consulta que el nombre «Pérez» aparezca una sola vez.

En el caso de una consulta que incluye varios campos, la combinación de valores de todos los campos debe ser inequívoca, de modo que el resultado pueda obtenerse a partir de un registro específico. Por ejemplo, supongamos que su agenda contiene «Pérez de Madrid» una vez y «Pérez de Barcelona» dos veces. La orden Valores unívocos hace que la consulta utilice los campos «apellido» y «ciudad» y devuelva como resultado «Pérez de Madrid» una vez y «Pérez de Barcelona» una vez.

En SQL, esta orden corresponde al predicado DISTINCT.

### Límites

Le permite maximizar la cantidad de registros que devuelve la consulta.

Si se añade un límite obtendrá cuantas filas haya especificado. Si no utiliza el límite, verá todos los registros que correspondan con los criterios de la consulta.

### Formular condiciones de filtro

Dispone de diversos operadores y órdenes para formular condiciones de filtro. Aparte de los operadores de relación, SQL dispone de órdenes específicas para consultar el contenido de campos de base de datos. Si utiliza dichas órdenes en la sintaxis de LibreOffice, LibreOffice las convertirá automáticamente a la sintaxis correspondiente de SQL. También puede introducir la orden SQL directamente. En las tablas siguientes se ofrece un resumen de los operadores y órdenes:

Operador | Significado | La condición se cumple si…
= | igual a | ... el contenido del campo es idéntico a la expresión introducida. El operador = no se mostrará en los campos de consulta. Si proporciona un valor sin operador, se adoptará automáticamente el operador =.
<> | distinto de | ... el contenido del campo no se corresponde con la expresión introducida.
> | mayor que | ... el contenido del campo es mayor que la expresión introducida.
< | menor que | ... el contenido del campo es menor que la expresión introducida.
>= | mayor que o igual a | ... el contenido del campo es idéntico o mayor que la expresión introducida.
<= | menor que o igual a | ... el contenido del campo es menor que o igual a la expresión especificada.

Orden de LibreOffice | Orden de SQL | Significado | La condición se cumple si…
IS EMPTY | IS NULL | es nulo | … El valor del campo está vacío. Para campos «sí/no» con tres estados, esta orden consulta automáticamente el estado indeterminado (ni «sí» ni «no»).
IS NOT EMPTY | IS NOT NULL | no está vacío | ... el campo de datos no está vacío.
LIKE (use el marcador de posición * para un número de caracteres indeterminado, o bien el marcador de posición ? para un solo carácter) | LIKE (use el marcador de posición % para cualquier número de caracteres, o bien, el marcador de posición _ para un solo carácter) | es un elemento de | ... el campo de datos contiene la expresión introducida. Los comodines (*) indican si la expresión x se encuentra al inicio (x*), al final (*x) o dentro del contenido del campo (*x*). En las consultas SQL utilice % como comodín SQL y en la superficie de LibreOffice puede utilizar el comodín habitual (*) del sistema de archivos. Los comodines * o % sustituyen un número cualquiera de caracteres. En la superficie de LibreOffice se emplea como comodín para representar exactamente un solo carácter el signo de interrogación (?) y en las consultas SQL, el guión de subrayado (_).
NOT LIKE | NOT LIKE | No es un elemento de | ... el campo de datos no contiene la expresión introducida.
BETWEEN x AND y | BETWEEN x AND y | comprendido en el intervalo [x,y] | ... el campo de datos contiene un valor comprendido entre x y y.
NOT BETWEEN x AND y | NOT BETWEEN x AND y | no comprendido en el intervalo [x,y] | ... el campo de datos contiene un valor no comprendido entre x y y.
IN (a; b; c...) Recuerde que el punto y coma sirve de separador en todas las listas de valores | IN (a, b, c...) | contiene a, b, c… | ... el campo de datos contiene una de las expresiones introducidas a, b, c,... Se pueden introducir muchas expresiones; el resultado de la consulta se obtiene con un operador O. Las expresiones a, b, c... pueden ser tanto cifras como caracteres
NOT IN (a; b; c...) | NOT IN (a, b, c...) | no contiene a, b, c… | ... el campo de datos no contiene una de las expresiones introducidas a, b, c,...
= TRUE | = TRUE | tiene el valor True | ... el campo de datos tiene el valor Verdadero.
= FALSE | = FALSE | tiene el valor False | ... el campo de datos tiene el valor False.

### Ejemplos

='Sra.' | muestra los campos de datos que contengan «Sra.»
<'2001-01-10' | devuelve las fechas anteriores al 10 de enero de 2001
LIKE 'd?me' | devuelve los nombres de los campos que contienen tanto «dime» como «dame».
LIKE 'S*' | muestra los campos de datos con contenidos como «Sol».
BETWEEN 10 AND 20 | muestra los campos de datos con contenidos comprendidos entre los valores 10 y 20. (Puede tratarse tanto de campos de texto y como de cifras.)
IN (1; 3; 5; 7) | muestra los campos de datos con los valores 1, 3, 5, 7. Si, por ejemplo, el campo de datos contiene una referencia, se puede definir una consulta que muestre el artículo en cuestión con el número introducido.
NOT IN ('Perez') | muestra los campos de datos que no contienen «Pérez».

LikeSecuencia de escape: {escape 'escape-character'}

Por ejemplo: select * from Articulo where Nom_articulo like 'The *%' {escape '*'}

Este ejemplo proporciona todas las entradas en las que el nombre del artículo comienza con 'The *'. También es posible buscar caracteres, que de lo contrario se interpretan como comodines, por ejemplo *, ?, _, % o el punto.

Outer Join Secuencia de escape: {oj outer-join}

Por ejemplo: select articulo.* from {oj articulo LEFT OUTER JOIN pedidos ON referencia=pedidos.ANR}

### Consultas en campos de texto

Para consultar el contenido de un cuadro de texto simplemente hay que definir la expresión entre comillas. No se diferencia entre mayúsculas y las minúsculas.

### Consultas en campos de fechas

Los campos de fecha se representan como #Date# para identificarlos. Las fechas, horas y constantes (expresiones literales) de fecha y hora usadas en las condiciones pueden ser del tipo SQL Escape Syntax o SQL2.

Elemento de tipo de fecha | Sintaxis de escape de SQL n.º 1 (puede ser obsoleta) | Sintaxis de escape de SQL n.º 2 | Sintaxis de SQL 2
Date | {D'AAAA-MM-DD'} | {d 'AAAA-MM-DD'} | 'AAAA-MM-DD'
Time | {D'HH:MM:SS'} | {t 'HH:MI:SS[.SS]'} | 'HH:MI:SS[.SS]'
DateTime | {D'AAAA-MM-DD HH:MM:SS'} | {ts 'AAAA-MM-DD HH:MI:SS[.SS]'} | 'AAAA-MM-DD HH:MI:SS[.SS]'

Ejemplo: select {d '1999-12-31'} from world.years

Ejemplo: select * from mytable where years='1999-12-31'

Todas las expresiones de fecha (literales) deben entrecomillarse con comillas simples. (Para más detalles, consulte la documentación de la base de datos y conector específicos que esté utilizando.)

### Consulta de campos Sí/No

Para filtrar los campos Si/No de tablas dBase, use la siguiente sintaxis:

Estado | Criterio de consulta | Ejemplo
Yes | en tablas dBASE: no es igual a cualquier valor dado | =1 proporciona todos los registros de datos en los que el campo Sí/No contiene el criterio "Sí" o "activado" (casilla señalada).
No | . | =0 proporciona todos los registros de datos en los que el campo Sí/No contiene el criterio "No" o "desactivado" (casilla no señalada).
Null | IS NULL | IS NULL muestra todos los registros de datos en los que el campo Sí/No no contiene ni el criterio Sí ni el criterio No (casilla en gris).

La sintaxis depende del sistema de base de datos utilizado. Debe tener en cuenta que los campos Sí/no se pueden definir de forma distinta (únicamente 2 estados en lugar de 3).

### Consultas paramétricas

Las consultas paramétricas permiten a los usuarios introducir valores durante la ejecución. Estos valores se utilizan en los criterios de selección de los registros que se mostrarán. Cada valor posee un nombre de parámetro asociado, el cual se utiliza para preguntar a los usuarios cuándo se ejecuta la consulta.

Los nombres de los parámetros van precedidos de dos puntos en las vistas de Diseño y SQL de las consultas. Esto puede emplearse en cualquier sitio donde puedan aparecer valores. Si el mismo valor debe aparecer más de una vez en la consulta, se reutilizará el nombre del parámetro correspondiente.

En el más sencillo de los casos, donde los usuarios proporcionan un valor que se ajusta para igualarlo, tan solo hace falta introducir el nombre del parámetro precedido por dos puntos en la fila Criterio. En el modo SQL esto debe escribirse así: WHERE "Campo" = :Nombre_del_parámetro

Los nombres de los parámetros no pueden contener ninguno de estos caracteres: <espacio>`!"$%^*()+={}[]@'~#<>?/,. Estos nombres no pueden ser iguales que los nombres de los campos o las palabras reservadas de SQL, pero pueden ser iguales que los alias.

Un provechoso método para seleccionar registros según partes del contenido de un campo de texto es añadir una columna oculta con el criterio "LIKE '%' || :Parte_del_campo || '%'". Esto seleccionará registros que coincidan con exactitud. Si se desea realizar una prueba que no distinga entre mayúsculas y minúsculas, puede emplear LOWER (Nombre_del_campo) como campo y LIKE LOWER ( '%' || :Parte_del_campo || '%' ) como el criterio. Cabe destacar que los espacios en el criterio son fundamentales; si se omiten, el procesador de SQL interpretará todo el criterio como una cadena por comparar. En el modo SQL, inserte esto así: LOWER ( "Nombre_del_campo" ) LIKE LOWER ( '%' || :Parte_del_campo || '%' ).

Pueden utilizarse las consultas paramétricas como el origen de datos de los subformularios, a fin de permitir a los usuarios restringir los registros mostrados.

### Entrada de parámetros

El cuadro de diálogo Entrada de parámetros solicita que se proporcionen los valores del parámetro. Escriba un valor para cada parámetro de consulta y confírmelo pulsando en Aceptar u oprimiento Intro.

Los valores proporcionados por el usuario pueden estar compuestos de cualesquier caracteres admisibles en SQL para el criterio relevante; esto puede depender del sistema de bases de datos subyacente.

Los usuarios pueden utilizar los caracteres comodín de SQL «%» (cadena arbitraria) o «_» (carácter sencillo arbitrario) como parte del valor para obtener registros con criterios más complejos.

## Modo SQL

SQL son las siglas en inglés de Structured Query Language (‘lenguaje de consultas estructurado’), que designa un conjunto de instrucciones para actualizar y gestionar bases de datos relacionales.

En LibreOffice no es necesario tener conocimientos de SQL para crear la mayor parte de consultas, ya que no es necesario escribir el código SQL. Si crea una consulta en Diseño de consulta, LibreOffice convierte automáticamente las instrucciones a la sintaxis SQL correspondiente. Si utiliza el botón Activar o desactivar la vista Diseño para cambiar la vista SQL, se pueden ver los comandos correspondientes a una consulta creada con anterioridad.

La consulta se puede formular directamente en código SQL. Sin embargo, debe tenerse en cuenta que la sintaxis especial depende del sistema de base de datos que se utilice.

Al introducir el código SQL de forma manual es posible crear consultas específicas en SQL que no sean compatibles con las superficies gráficas del Diseño de consulta. Estas consultas deben ejecutarse en el modo SQL nativo.

Si pulsa el símbolo Ejecutar directamente la orden SQL en la vista SQL podrá formular una consulta no procesada por LibreOffice.