Contenido
Índice 🔎︎

# Diseño de 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 del archivo de la base de datos, pulse en el icono Consultas y, a continuación, vaya a 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 la orden Crear vista de la pestaña 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 disposición de la ventana Diseño de consulta, lo cual no sucede cuando se crea una vista.

## La vista Diseño

Para crear una consulta, pulse en el icono Consultas de un documento de base de datos y, a continuación, pulse en Crear consulta en modo de diseño.

El panel inferior de la vista de diseño es donde puede definirse la consulta. Para definir una consulta, especifique los nombres de campos de la base de datos que deban incluirse, así como los criterios para mostrar los campos. Para reorganizar las columnas en el panel inferior de la vista de diseño, arrastre la cabecera de una columna hasta una posición nueva, 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, pulse dos veces 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 en la vista de diseño de consultas

Tecla | Función
F4 | Previsualizar
F5 | Ejecutar consulta
F7 | Añadir 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.

Pulse dos veces 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.

### Quitar tablas

Para quitar 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 Eliminar borrará la tabla de la vista de diseño. Otra opción es oprimir la tecla Supr.

### Desplazar tabla y modificar tamaño de tabla

Las tablas y su tamaño y organización 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

Si existen relaciones de datos entre un nombre de campo en una tabla y un nombre de campo en otra tabla, podrá emplear estas relaciones para su consulta.

Si, por ejemplo, tiene una hoja de cálculo para artículos identificados por el número de artículo y una hoja de cálculo para clientes en la que registra todos los artículos que un cliente pide utilizando los números de artículo correspondientes, entonces existe una relación entre los dos campos de datos «número de artículo». Si ahora quisiera crear una consulta que devuelva todos los artículos que ha pedido un cliente, debe recuperar datos de las dos hojas de cálculo. Para hacerlo, LibreOffice debe conocer la relación que hay entre los datos de ambas hojas.

Para realizar esta operación, pulse en un nombre de campo en una tabla (por ejemplo, el nombre de campo «Número-Artículo» de la tabla Cliente), mantenga presionado el botón del ratón y arrastre el nombre del campo hasta el nombre de campo de la otra tabla («Número-Artículo» en la tabla Artículo). Cuando suelte el botón del ratón, aparecerá una línea conectando ambos campos entre ambas tablas. La condición correspondiente de que los contenidos de ambos nombres de campos deben ser idénticos se introduce en la consulta SQL resultante.

La creación de consultas basadas en varias hojas de cálculo relacionadas solo es posible si se emplea LibreOffice como interfaz de una base de datos relacional.

No se puede acceder a tablas de diferentes bases de datos en una consulta. Las consultas en las que intervienen varias tablas pueden crearse únicamente dentro de una sola base de datos.

### Especificar el tipo de relación

Si pulsa dos veces en la línea que une dos campos enlazados o selecciona la orden del menú Insertar ▸ Relación nueva, podrá especificar el tipo de relación a través del cuadro de diálogo Relaciones.

Como alternativa, presione Tab hasta seleccionar la línea y, acto seguido, presione Mayús + F10 para que se muestre el menú contextual y allí elegir la orden Editar. Algunas bases de datos admiten solo algunos de los tipos de unión posibles.

### Eliminar relaciones

Para eliminar una relación entre dos tablas, pulse en la línea conectora y oprima 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 la 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 en una fila se enlazan con un Y booleano.

### Especificar el nombre de los campos

Primero, seleccione todos los nombres de campos de las tablas que quiera añadir a la consulta. Para este fin puede arrastrar y colocar o pulsar dos veces en un nombre de campo en la ventana de la tabla. Con el método de arrastrar y colocar, sírvase del ratón para arrastrar un nombre de campo desde la ventana de la tabla hasta el área inferior de la ventana de diseño de consulta. Mientras lleva a cabo este proceso, puede decidir qué columna en la ventana de diseño de consulta recibirá el campo seleccionado. También se puede seleccionar un nombre de campo si pulsa dos veces sobre este. Tras hacerlo, se añadirá en la siguiente columna libre de la ventana de diseño de consulta.

### Eliminar nombres de campos

Para quitar un nombre de campo 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 la consulta

Utilice el botón Guardar en la barra Estándar para guardar la consulta. Verá un cuadro de diálogo que le solicitará un nombre para la consulta. Si la base de datos admite esquemas, también puede introducir un nombre de esquema.

#### Esquema

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

#### Nombre de la consulta o de la vista de tabla

Proporcione el nombre de la consulta o la vista de tabla.

### Filtrar datos

Para filtrar datos en la consulta, establezca los criterios que desee en el área inferior de la ventana de diseño de consulta. Las opciones que se enumeran a continuación están disponibles:

#### Campo

Escriba el nombre del campo de datos al que se hace referencia en la consulta. Todas las opciones definidas en las filas de opciones del filtro se refieren a este campo. Si activa aquí una celda con una pulsación del ratón, verá un botón de flecha, el cual le permite seleccionar un campo. La opción «Nombre de tabla.*» selecciona todos los campos de datos para que se les apliquen los criterios especificados.

#### Alias

Permite especificar un alias. Este alias se mostrará en la consulta en sustitución del nombre del campo. Gracias a esta funcionalidad, es posible utilizar etiquetas de columnas definidas por el usuario. Por ejemplo, si el campo de datos se denomina «NoPt» y en lugar de ese nombre quiere que en la consulte figure «NumParte», escriba «NumParte» como el alias.

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

SELECT columna AS alias FROM tabla.

Por ejemplo:

SELECT "NoPt" AS "NumParte" FROM "Partes"

#### Tabla

Aquí se muestra la tabla de base de datos correspondiente al campo de datos seleccionado. Si activa esta celda pulsando en ella con el ratón, se muestra una flecha que le permite seleccionar otra tabla de la consulta actual.

#### Ordenar

Si pulsa en esta celda, puede elegir una opción de ordenación: ascendente, descendente y sin ordenar. Los campos de datos se ordenarán alfabéticamente y los numéricos, numéricamente. En la mayoría de las bases de datos, los administradores pueden establecer las opciones de ordenación.

#### Visible

Si activa la propiedad Visible de un campo de datos, este campo será visible en la consulta resultante. Si utiliza un campo de datos únicamente para formular una condición o efectuar un cálculo, no hace falta hacerlo visible.

#### Criterios

Permite especificar unos primeros criterios mediante los cuales habrá de filtrarse el contenido del campo de datos.

#### o

Aquí puede introducir un criterio de filtro adicional por cada renglón. Varios criterios en una única columna se interpretarán como un O booleano.

Asimismo, puede emplear el menú contextual de las cabeceras de filas en el área inferior de la ventana de diseño de consulta para insertar un filtro que se base en una función:

### Funciones

Las funciones disponibles aquí dependerán de aquellas que el motor de bases de datos brinde.

Si trabaja con la base de datos HSQL incorporada, el cuadro de lista de la fila Función ofrece las posibilidades siguientes:

Opción | SQL | Efecto
Sin función |  | No se ejecutará ninguna función.
Promedio | AVG | Calcula la media aritmética de un campo.
Recuento | COUNT | Determina el número de registros de la tabla. Los campos vacíos pueden incluirse (a) o excluirse (b). a) COUNT(*): si introduce un asterisco como argumento se cuentan todos los registros de datos de la tabla. b) COUNT(columna): pasar un nombre de campo como argumento cuenta únicamente los registros en los cuales el campo especificado contiene un valor. Aquellos registros en los que el campo tenga un valor nulo (es decir, que no contiene ningún valor textual ni numérico) no se incluirán en el recuento.
Máximo | MAX | Determina el valor más alto de un registro para este campo.
Mínimo | MIN | Determina el valor más bajo de un registro para este campo.
Suma | SUM | Calcula la suma de los valores de los registros para los campos asociados.
Agrupar | GROUP BY | Agrupa los datos de la consulta de acuerdo con el nombre del campo seleccionado. Las funciones se ejecutan en función de los grupos seleccionados. En SQL, esta opción se corresponde con la cláusula GROUP BY. Si se añade un criterio, esta entrada aparecerá en la subcláusula HAVING de SQL.

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

SELECT FUNCTION(columna) FROM tabla.

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

SELECT SUM("Precio") FROM "Articulo".

Con la salvedad de la función Agrupar, las funciones anteriores se denominan funciones de totalización. Son funciones que calculan datos para crear resúmenes a partir de los resultados. También son posibles funciones adicionales que no se enumeran en el cuadro de lista. Estas dependen del motor de base de datos específico en uso y de la funcionalidad proporcionada por el controlador de Base utilizado para conectarse a ese motor de bases de datos.

Para utilizar estas funciones no enumeradas, las debe introducir manualmente en Campo.

También es posible asignar alias a las llamadas de las funciones. Si no quiere que se muestre la cadena de la consulta en la cabecera de la columna, introduzca un nombre sustituto en Alias.

En una instrucción SQL, la llamada a función correspondiente es:

SELECT FUNCTION() AS alias FROM tabla

Ejemplo:

SELECT COUNT(*) AS recuento FROM "Articulo"

Si ejecuta esta función, no podrá insertar más columnas para la consulta que no sean argumentos de la función «Agrupar».

Ejemplos

En el ejemplo siguiente, se ejecuta una consulta a través de dos tablas: una, «Artículos», con el campo «Num_articulo», y la otra, «Proveedores», con el campo «Nombre_proveedor». Ambas tablas cuentan además con un nombre de campo en común, «Num_proveedor».

Los pasos descritos a continuación son necesarios para crear una consulta que contenga todos los proveedores que entregan más de tres artículos.

1. Inserte las tablas «Artículo» y «Proveedores» en el diseño de la consulta.

2. Enlace los campos «Num_proveedor» de las dos tablas si todavía no existiese una relación de este tipo.

3. Double-click on the "Item_No" field from the "Item" table. Display the Function line using the context menu and select the Count function.

4. Introduzca >3 como criterio y desactive el campo Visible.

5. Double-click the "Supplier_Name" field in the "Suppliers" table and choose the Group function.

6. Ejecute la consulta.

If the "price" (for the individual price of an article) and "Supplier_No" (for the supplier of the article) fields exist in the "Item" table, you can obtain the average price of the item that a supplier provides with the following query:

1. Inserte la tabla «Artículo» en el diseño de la consulta.

2. Pulse dos veces en los campos «Precio» y «Num_proveedor».

3. Enable the Function line and select the Average function from the "Price" field.

4. You can also enter "Average" in the line for the alias name (without quotation marks).

5. Choose Group for the "Supplier_No" field.

6. Ejecute la consulta.

Dispone de las órdenes de menú contextual y los símbolos siguientes:

### Funciones

Muestra u oculta una fila según la selección de funciones.

### Nombre de tabla

Muestra u oculta la fila del nombre de la tabla.

### Nombre de alias

Shows or hides the row for the alias name.

### Valores distintos

Retrieves only distinct values from the query. This applies to multiple records that might contain several repeating occurrences of data in the selected fields. If the Distinct Values command is active, you should only see one record in the query (DISTINCT). Otherwise, you will see all records corresponding to the query criteria (ALL).

Por ejemplo, si el nombre «Lucía» 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 «Lucía» 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 «Lucía de Madrid» una vez y «Lucía de Barcelona» dos veces. La orden Valores unívocos hace que la consulta utilice los campos «apellido» y «ciudad» y devuelva como resultado «Lucía de Madrid» una vez y «Lucía de Barcelona» una vez.

En SQL, esta orden se corresponde con el predicado DISTINCT.

### Límite

Le permite limitar el número máximo de registros devueltos por una consulta.

If a Limit construction is added, you will get at most as many rows as the number you specify. Otherwise, you will see all records corresponding to the query criteria.

### Formular las condiciones del filtro

Dispone de diversos operadores y órdenes para que formule condiciones de filtro. Además de los operadores relacionales, hay órdenes específicas de SQL que permiten consultar el contenido de los campos de la base de datos. Si utiliza estas órdenes en la sintaxis de LibreOffice, LibreOffice las convierte automáticamente a la correspondiente sintaxis de SQL por medio de un analizador interno. También es posible escribir la orden SQL directamente y evitar el analizador interno. Las tablas siguientes le ofrecen una visión de conjunto de los operadores y las órdenes:

Operador | Significado | La condición se cumple si…
= | igual a | … el contenido del campo es idéntico a la expresión indicada. El operador = no se mostrará en los campos de la consulta. Si introduce un valor sin algún operador, se da por supuesto el operador =.
<> | no es igual a | … el contenido del campo no se corresponde con la expresión especificada.
> | mayor que | … el contenido del campo es mayor que la expresión especificada.
< | menor que | … el contenido del campo es menor que la expresión especificada.
>= | mayor que o igual a | … el contenido del campo es mayor que o igual a la expresión especificada.
<= | 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 campo no contiene ningún dato. En los campos sí/no con tres estados posibles, esta orden automáticamente efectúa una consulta sobre el estado indeterminado (ni Sí ni No).
IS NOT EMPTY | IS NOT NULL | no está vacío | … el campo no está vacío, es decir, que contiene datos.
LIKE sustitutivo (*) para un número indeterminado de caracteres sustitutivo (?) para exactamente un carácter | LIKE sustitutivo (%) para un número indeterminado de caracteres Sustitutivo (_) para exactamente un carácter | es un elemento de | … el campo de datos contiene la expresión indicada. El sustitutivo «*» indica si la expresión «x» ocurre al principio (x*), al final (*x) o dentro del contenido del campo (*x*). Puede introducir como sustitutivo en consultas SQL ya sea el carácter SQL «%» o el familiar sustitutivo de sistema de archivos (*) por medio de la interfaz de LibreOffice. Los sustitutivos (*) o (%) representan un número indeterminado de caracteres. El signo de interrogación (?) en la interfaz de LibreOffice o el guion bajo (_) en las consultas SQL se emplean para representar exactamente un carácter.
NOT LIKE | NOT LIKE | No es un elemento de | … el campo no contiene datos con la expresión indicada.
BETWEEN x AND y | BETWEEN x AND y | se comprende en el intervalo [x,y] | … el campo contiene un valor de datos comprendido entre los valores X y Y.
NOT BETWEEN x AND y | NOT BETWEEN x AND y | no se comprende en el intervalo [x,y] | … el campo contiene un valor de datos que no se comprende entre los valores X y Y.
IN (a; b; c...) Observe que se utilizan punto y coma como separadores en todos los listados de valores. | IN (a, b, c...) | contiene a, b, c… | ... the field name contains one of the specified expressions a, b, c,... Any number of expressions can be specified, and the result of the query is determined by a boolean OR operator. The expressions a, b, c... can be either numbers or characters
NOT IN (a; b; c...) | NOT IN (a, b, c...) | no contiene a, b, c… | ... the field does not contain one of the specified expressions a, b, c,...
= TRUE | = TRUE | tiene el valor True (verdadero) | ... the field name has the value True.
= FALSE | = FALSE | tiene el valor False (falso) | ... the field data value is set to 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 'g?ve' | returns records with field content such as "give" and "gave".
LIKE 'S*' | devuelve registros con contenidos de campo tales como «Sol».
BETWEEN 10 AND 20 | devuelve registros con contenidos de campo entre 10 y 20. (Los campos pueden ser tanto de texto como numéricos.)
IN (1; 3; 5; 7) | devuelve registros con los valores 1, 3, 5 y 7. Si el nombre de campo contiene un número de artículo, por ejemplo, podrá crear una consulta que devuelva el artículo que contiene el número especificado.
NOT IN ('Pérez') | devuelve registros que no contienen «Pérez».

Like Escape Sequence: {escape 'escape-character'}

Example: select * from Item where ItemName like 'The *%' {escape '*'}

The example will give you all of the entries where the item name begins with 'The *'. This means that you can also search for characters that would otherwise be interpreted as placeholders, such as *, ?, _, % or the period.

Outer Join Escape Sequence: {oj outer-join}

Example: select Article.* from {oj item LEFT OUTER JOIN orders ON item.no=orders.ANR}

### Efectuar consultas en campos de texto

To query the content of a text field, you must put the expression between single quotes. The distinction between uppercase and lowercase letters depends on the database in use. LIKE, by definition, is case-sensitive (though some databases don't interpret this strictly).

### Efectuar consultas en campos de fecha

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 Sintaxis de escape SQL o SQL2.

Elemento de tipo Fecha | 1.ª sintaxis de escape SQL (puede ser obsoleta) | 2.ª sintaxis de escape SQL | Sintaxis de SQL2
Fecha | {D'YYYY-MM-DD'} | {d 'YYYY-MM-DD'} | 'YYYY-MM-DD'
Hora | {D'HH:MM:SS'} | {t 'HH:MI:SS[.SS]'} | 'HH:MI:SS[.SS]'
Fecha y hora | {D'YYYY-MM-DD HH:MM:SS'} | {ts 'YYYY-MM-DD HH:MI:SS[.SS]'} | 'YYYY-MM-DD HH:MI:SS[.SS]'

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

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

Todas las expresiones de fecha (literales de fecha) deben acotarse con comillas rectas simples. (Consulte el manual de referencia de la base de datos y el conector concretos que utiliza para obtener más detalles al respecto.)

### Efectuar consultas en campos sí/no

Para efectuar consultas en campos sí/no, utilice esta sintaxis para archivos dBASE:

Estado | Criterio de consulta | Ejemplo
Sí | for dBASE tables: not equal to any given value | =1 returns all records where the Yes/No field has the status "Yes" or "On" (selected in black),
No | . | =0 returns all records for which the Yes/No field has the status "No" or "Off" (no selection).
Null | IS NULL | IS NULL returns all records for which the Yes/No field has neither of the states Yes or No (selected in gray).

The syntax depends on the database system used. You should also note that Yes/No fields can be defined differently (only 2 states instead of 3).

### Consultas con parámetros

Parameter queries allow the user to input values at run-time. These values are used within the criteria for selecting the records to be displayed. Each such value has a parameter name associated with it, which is used to prompt the user when the query is run.

Parameter names are preceded by a colon in both the Design and SQL views of a query. This can be used wherever a value can appear. If the same value is to appear more than once in the query, the same parameter name is used.

In the simplest case, where the user enters a value which is matched for equality, the parameter name with its preceding colon is simply entered in the Criterion row. In SQL mode this should be typed as WHERE "Field" = :Parameter_name

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

A useful construction for selecting records based on parts of a text field's content is to add a hidden column with "LIKE '%' || :Part_of_field || '%'" as the criterion. This will select records with an exact match. If a case-insensitive test is wanted, one solution is to use LOWER (Field_Name) as the field and LIKE LOWER ( '%' || :Part_of_field || '%' ) as the criterion. Note that the spaces in the criterion are important; if they are left out the SQL parser interprets the entire criterion as a string to be matched. In SQL mode this should be typed as LOWER ( "Field_Name" ) LIKE LOWER ( '%' || :Part_of_field || '%' ).

Parameter queries may be used as the data source for subforms, to allow the user to restrict the displayed records.

### Entrada de parámetros

The Parameter Input dialog asks the user to enter the parameter values. Enter a value for each query parameter and confirm by clicking OK or typing Enter.

The values entered by the user may consist of any characters which are allowable for the SQL for the relevant criterion; this may depend on the underlying database system.

The user can use the SQL wild-card characters "%" (arbitrary string) or "_" (arbitrary single character) as part of the value to retrieve records with more complex criteria.

## Modo SQL

SQL es la sigla inglesa de «Structured Query Language» (‘lenguaje de consultas estructuradas’) y describe las instrucciones que se efectuarán para actualizar y gestionar bases de datos relacionales.

In LibreOffice you do not need any knowledge of SQL for most queries, since you do not have to enter the SQL code. If you create a query in the query designer, LibreOffice automatically converts your instructions into the corresponding SQL syntax. If, with the help of the Switch Design View On/Off button, you change to the SQL view, you can see the SQL commands for a query that has already been created.

You can formulate your query directly in SQL code. Note, however, that the special syntax is dependent upon the database system that you use.

If you enter the SQL code manually, you can create SQL-specific queries that are not supported by the graphical interface in the Query designer. These queries must be executed in native SQL mode.

By clicking the Run SQL command directly icon in the SQL view, you can formulate a query that is not processed by LibreOffice and sent directly to the database engine.