Module
Contents
Index 🔎︎

# Disseny de la consulta

La Vista del disseny de la consulta vos permet crear i editar una consulta de la base de dades.

Per accedir a esta orde...

In a database file window, click the Queries icon, then choose Edit - Edit.

La majoria de bases de dades utilitzen consultes per filtrar o ordenar les taules per a la visualització de registres en un equip informàtic. Les vistes ofereixen les mateixes funcionalitats que les consultes, però des d'un servidor. Si la vostra base de dades és en un servidor que permet l'ús de vistes, les podreu utilitzar per filtrar els registres en el servidor i, d'esta manera, accelerar-ne el temps de visualització.

Si seleccioneu l'orde Crea una vista de la pestanya Taules en un document de base de dades, visualitzareu la finestra Disseny de la vista, que és molt paregut a la finestra Disseny de la consulta que es descriu ací.

El format de la finestra Disseny de la consulta s'emmagatzema amb una consulta creada, però en canvi no es pot emmagatzemar amb una vista creada.

## La vista de disseny

Per crear una consulta, feu clic a la icona Consultes d'un document de base de dades, i a continuació a Crea una consulta en vista de disseny.

The lower pane of the Design View is where you define the query. To define a query, specify the database field names to include and the criteria for displaying the fields. To rearrange the columns in the lower pane of the Design View, drag a column header to a new location, or select the column and press Command Ctrl+arrow key.

Les icones de les barres Disseny de la consulta i Disseny es mostren a la part superior de la finestra Vista de disseny de la consulta.

Si voleu provar el funcionament d'una consulta, feu doble clic al nom d'esta consulta en el document de base de dades. El resultat de la consulta es mostrarà en una taula paregut a la Vista de fonts de dades. Nota: la taula que es mostrarà serà temporal.

### Tecles per a la vista del disseny de la consulta

Tecla | Funció
F4 | Previsualització
F5 | Execució de la consulta
F7 | Addició d'una taula o una consulta

## Navega

When you open the query design for the first time, you see a dialog in which you must first select the table or query that will be the basis for your new query.

Feu doble clic als camps que vulgueu per afegir-los a la consulta. Arrossegueu i deixeu anar per definir relacions.

Quan estigueu dissenyant una consulta no podreu modificar les taules seleccionades.

### Supressió de taules

Per suprimir una taula de la Vista de disseny, feu clic a la vora superior de la finestra de la taula i obriu el menú contextual, on podreu triar l'orde Suprimeix. De manera alternativa, podeu prémer el botó Supr.

### Moure taules i modificar-ne la mida

Podeu redimensionar i organitzar les taules segons les vostres preferències. Per moure una taula, arrossegueu-ne la vora superior fins a la posició que vulgueu. Podeu augmentar o reduir la mida d'una taula col·locant la busca del ratolí en una vora o una cantonada de la taula i arrossegant-lo fins aconseguir la mida desitjada.

## Relacions entre taules

En cas que hi haja dades relacionades entre el nom de camp d'una taula i el nom de camp d'una altra taula, podreu utilitzar estes relacions per a la vostra consulta.

If, for example, you have a spreadsheet for articles identified by an article number, and a spreadsheet for customers in which you record all articles that a customer orders using the corresponding article numbers, then there is a relationship between the two "article number" data fields. If you now want to create a query that returns all articles that a customer has ordered, you must retrieve data from two spreadsheets. To do this, you must inform LibreOffice about the relationship which exists between the data in the two spreadsheets.

To do this, click a field name in a table (for example, the field name "Item-Number" from the Customer table), hold down the mouse button and then drag the field name to the field name of the other table ("Item-Number" from the Item table). When you release the mouse button, a line connecting the two fields between the two table windows appears. The corresponding condition that the content of the two field names must be identical is entered in the resulting SQL query.

Només podeu crear una consulta basada en diversos fulls relacionats si utilitzeu el LibreOffice com a interfície per a una base de dades relacional.

No podeu accedir a taules de bases de dades diferents en una consulta. Només podeu crear consultes en què intervinguin diverses taules en una sola base de dades.

### Specifying the relation type

If you double-click on the line connecting two linked fields or call the menu command Insert - New Relation, you can specify the type of relation in the Relations dialog.

També podeu prémer la tecla Tab fins que la línia estiga seleccionada, i a continuació Maj+F10 per mostrar el menú contextual i triar-hi l'orde Edita. Hi ha bases de dades que només admeten un subconjunt de tots els tipus d'unió possibles.

### Supressió de relacions

Per suprimir una relació entre dues taules, feu clic a la línia de connexió i premeu la tecla Supr.

També podeu suprimir les entrades respectives a Camps implicats del diàleg Relacions, o bé podeu prémer la tecla Tab fins que el vector de connexió quede realçat i a continuació Maj+F10 per obrir el menú contextual i seleccionar-hi l'orde Suprimeix.

## Defining the query

Seleccioneu les condicions per definir la consulta. Cada columna de la taula de disseny accepta un camp de dades per a la consulta. Les condicions d'una fila s'enllacen amb el booleà AND.

### Specifying field names

First, select all field names from the tables that you want to add to the query. You can do this either by drag-and-drop or by double-clicking a field name in the table window. With the drag-and-drop method, use the mouse to drag a field name from the table window into the lower area of the query design window. As you do this, you can decide which column in the query design window will receive the selected field. A field name can also be selected by double-clicking. It will then be added to the next free column in the query design window.

### Supressió de noms de camp

Per suprimir un nom de camp de la consulta, feu clic a la capçalera de columna del camp i trieu l'orde Suprimeix en el menú contextual que es mostrarà per a la columna.

### Saving the query

Use the Save icon on the Standard toolbar to save the query. You will see a dialog that asks you to enter a name for the query. If the database supports schemas, you can also enter a schema name.

#### Esquema

Introduïu el nom de l'esquema assignat a la consulta o a la vista de taula.

#### Nom de la consulta o de la vista de taula

Introduïu el nom de la consulta o de la vista de taula.

### Filtratge de dades

To filter data for the query, set the desired criteria in the lower area of the query design window. The following options are available:

#### Camps

Enter the name of the data field that is referred to in the Query. All settings made in the filter option rows refer to this field. If you activate a cell here with a mouse click you'll see an arrow button, which enables you to select a field. The "Table name.*" option selects all data fields with the effect that the specified criteria will be applied to all table fields.

#### Àlies

Specifies an alias. This alias will be listed in the query instead of the field name. This makes it possible to use user-defined column labels. For example, if the data field is named PtNo and, instead of that name, you would like to have PartNum appear in the query, enter PartNum as the alias.

In a SQL statement, aliases are defined as follows:

SELECT column AS alias FROM table.

Per exemple:

SELECT "PtNo" AS "PartNum" FROM "Parts"

#### Taula

The corresponding database table of the selected data field is listed here. If you activate this cell with a mouse click, an arrow will appear which enables you to select a different table for the current query.

#### Ordena

If you click on this cell, you can choose a sort option: ascending, descending and unsorted. Text fields will be sorted alphabetically and numerical fields numerically. For most databases, administrators can set the sorting options at the database level.

#### Visible

If you mark the Visible property for a data field, that field will be visibly displayed in the resulting query. If you are only using a data field to formulate a condition or make a calculation, you do not necessarily need to display it.

#### Criteris

Specifies a first criteria by which the content of the data field is to be filtered.

#### o

Here you can enter one additional filter criterion for each line. Multiple criteria in a single column will be interpreted as boolean OR.

You can also use the context menu of the line headers in the lower area of the query design window to insert a filter based on a function:

### Funcions

The functions which are available here depend on those provided by the database engine.

If you are working with the embedded HSQL database, the list box in the Function row offers you the following options:

Opció | SQL | Efecte
Cap funció |  | No s'executarà cap funció.
Mitjana | AVG | Calcula la mitjana aritmètica d'un camp.
Compta | COUNT | Determines the number of records in the table. Empty fields can either be counted (a) or excluded (b). a) COUNT(*): si s'indica un asterisc com a argument es comptaran tots els registres de la taula. b) COUNT(column): Passing a field name as an argument counts only those records for fields in which the field name in question contains a value. Records with fields having Null values (i.e. fields containing no characters) will not be counted.
Màxim | MAX | Determines the highest value of a record for that field.
Mínim | MIN | Determines the lowest value of a record for that field.
Suma | SUM | Calculates the sum of the values of records for the associated fields.
Agrupa | GROUP BY | Groups query data according to the selected field name. Functions are executed according to the specified groups. In SQL, this option corresponds to the GROUP BY clause. If a criterion is added, this entry appears in the SQL HAVING sub-clause.

També podeu introduir crides de funció directament a l'expressió SQL. La sintaxi és:

SELECT FUNCTION(column) FROM table.

Per exemple, a l'SQL la crida de funció per calcular una suma és:

SELECT SUM("Price") FROM "Article".

Except for the Group function, the above functions are called Aggregate functions. These are functions that calculate data to create summaries from the results. Additional functions that are not listed in the list box might be also possible. These depend on the specific database engine in use and on the current functionality provided by the Base driver used to connect to that database engine.

To use other functions not listed in the list box, you must enter them manually under Field.

You can also assign aliases to function calls. If you do not want to display the query string in the column header, enter a desired substitute name under Alias.

La funció corresponent en una expressió SQL és:

SELECT FUNCTION() AS alias FROM table

Exemple:

SELECT COUNT(*) AS count FROM "Item"

If you run such a function, you cannot insert any additional columns for the query other than as an argument in a "Group" function.

Exemples

En l'exemple següent, hi ha una consulta que s'executa en dues taules: d'una banda, la taula "Element" amb el camp "Núm_Element" i, de l'altra, la taula "Proveïdors" amb el camp "Nom_Proveïdor". A més, estes dues taules tenen un nom de camp comú, "Núm_Proveïdor".

Per crear una consulta que continga tots els proveïdors que entreguen més de tres elements, realitzeu els passos següents:

1. Inseriu les taules "Element" i "Proveïdors" al disseny de la consulta.

2. Enllaceu els camps "Núm_Proveïdor" de les dues taules si encara no s'hi ha establit una relació d'este tipus.

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. Introduïu >3 com a criteri i desactiveu el camp Visible.

5. Feu doble clic al camp "Nom_Proveïdor" de la taula "Proveïdors" i trieu la funció Agrupa.

6. Executeu la consulta.

Si els camps "Preu" (per al preu individual d'un article) i "Núm_Proveïdor" (per al proveïdor de l'article) existeixen a la taula "Element", podreu obtindre el preu mitjà per a l'element proporcionat per un proveïdor mitjançant la consulta següent:

1. Inseriu la taula "Element" al disseny de la consulta.

2. Feu doble clic als camps "Preu" i "Núm_Proveïdor".

3. Habiliteu la línia Funció i seleccioneu la funció Mitjana en el camp "Preu".

4. També podeu introduir "Mitjana" a la línia per al nom de l'àlies (sense cometes).

5. Trieu Agrupa per al camp "Núm_Proveïdor".

6. Executeu la consulta.

Disposareu de les ordes de menú contextual i els símbols següents:

### Funcions

Shows or hides a row for the selection of functions.

### Nom de la taula

Mostra o amaga la fila per al nom de la taula.

### Nom de l'àlies

Mostra o amaga la fila per al nom de l'àlies.

### Valors diferents

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).

Per exemple, si el nom "Martí" apareix més d'una vegada a la base de dades d'adreces, podreu triar l'orde Valors diferents per especificar a la consulta que el nom "Martí" només tindrà una ocurrència.

Per a una consulta en què intervinguin diversos camps, la combinació dels valors de tots els camps ha de ser única per tal que el resultat es puga formar a partir d'un registre específic. Per exemple, pot ser que tingueu "Martí a Barcelona" una vegada a la llibreta d'adreces i "Martí a Girona" dues vegades. En un cas així, si trieu l'orde Valors diferents, la consulta utilitzarà els dos camps "Cognoms" i "Ciutat" i tornarà el resultat "Martí a Barcelona" una vegada i el resultat "Martí a Girona" una sola vegada, també.

En SQL, esta orde correspon al predicat DISTINCT.

### Límit

Allows you to limit the maximum number of records returned by a query.

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.

### Formulació de condicions de filtratge

When formulating filter conditions, various operators and commands are available to you. Apart from the relational operators, there are SQL-specific commands that query the content of database fields. If you use these commands in the LibreOffice syntax, LibreOffice automatically converts these into the corresponding SQL syntax via an internal parser. You can also enter the SQL command directly and bypass the internal parser. The following tables give an overview of the operators and commands:

Operador | Definició | La condició es compleix si...
= | igual a | ... el contingut del camp és idèntic a l'expressió indicada. The operator = will not be displayed in the query fields. If you enter a value without any operator, the = operator is automatically assumed.
<> | diferent de | ... el contingut del camp no es correspon amb l'expressió indicada.
> | major que | ... el contingut del camp és major que l'expressió indicada.
< | menor que | ... el contingut del camp és menor que l'expressió indicada.
>= | major que o igual a | ... el contingut del camp és major que l'expressió indicada o igual a esta expressió.
<= | menor que o igual a | ... el contingut del camp és menor que l'expressió indicada o igual a esta expressió.

Orde del LibreOffice | Orde SQL | Definició | La condició es compleix si...
IS EMPTY | IS NULL | és nul | ... the field contains no data. For Yes/No fields with three possible states, this command automatically queries the undetermined state (neither Yes nor No).
IS NOT EMPTY | IS NOT NULL | no és buit | ... the field is not empty, i.e it contains data.
LIKE placeholder (*) for any number of characters placeholder (?) for exactly one character | LIKE placeholder (%) for any number of characters Placeholder (_) for exactly one character | és un element de | ... the data field must contain the indicated search string in the order given. The position of the (*) placeholder indicates whether the searched for string (x) occurs before the placeholder (x*), after the placeholder (*x) or between the placeholders (*x*). Instead of the familiar file system (*) placeholder, you can also use the SQL (%) character as a placeholder in SQL queries in the LibreOffice interface. The (*) or (%) placeholder stands for any number of characters. The question mark (?) in the LibreOffice interface or the underscore (_) in SQL queries is used to represent exactly one character.
NOT LIKE | NOT LIKE | no és un element de | ... the field does not contain data having the specified expression.
BETWEEN x AND y | BETWEEN x AND y | es troba dins l'interval [x,y] | ... the field contains a data value that lies between the two values x and y.
NOT BETWEEN x AND y | NOT BETWEEN x AND y | No es troba dins l'interval [x,y] | ... the field contains a data value that does not lie between the two values x and y.
IN (a; b; c...) Note that semicolons are used as separators in all value lists! | IN (a, b, c...) | conté 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 conté a, b, c... | ... the field does not contain one of the specified expressions a, b, c,...
= TRUE | = TRUE | té el valor True | ... el nom del camp té el valor True.
= FALSE | = FALSE | té el valor False | ... the field data value is set to false.

### Exemples

='Ms.' | retorna els noms de camp que continguen "Sra."
<'2001-01-10' | retorna les dates anteriors al 10 de gener de 2001
LIKE 'g?ve' | returns records with field content such as "give" and "gave".
LIKE 'S*' | returns records with field contents such as "Sun".
BETWEEN 10 AND 20 | returns records with field content between the values 10 and 20. (The fields can be either text fields or number fields).
IN (1; 3; 5; 7) | returns records with the values 1, 3, 5, 7. If the field name contains an item number, for example, you can create a query that returns the item having the specified number.
NOT IN ('Smith') | returns records that do not contain "Smith".

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

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

L'exemple vos proporcionarà totes les entrades en què el nom de l'element comence per 'The *'. Això significa que també podeu buscar caràcters que altrament s'interpretarien com a espais reservats, com ara *, ?, _, % o un punt.

Outer Join Escape Sequence: {oj outer-join}

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

### Consulta de camps de text

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).

### Consulta de camps de data

Date fields are represented as #Date# to clearly identify them as dates. Date, time and date/time constants (literals) used in conditions can be of either the SQL Escape Syntax type, or default SQL2 syntax.

Element de tipus data | SQL Escape syntax #1 - may be obsolete | SQL Escape syntax #2 | Sintaxi de SQL2
Data | {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]'
Data i hora | {D'YYYY-MM-DD HH:MM:SS'} | {ts 'YYYY-MM-DD HH:MI:SS[.SS]'} | 'YYYY-MM-DD HH:MI:SS[.SS]'

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

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

All date expressions (date literals) must be enclosed with single quotation marks. (Consult the reference for the particular database and connector you are using for more details.)

### Consulta de camps Sí/No

Per consultar camps Sí/No, utilitzeu la sintaxi següent per a taules dBASE:

Estat | Criteri de la consulta | Exemple
Sí | per a taules dBASE: diferent de qualsevol valor donat | =1 torna tots els registres en què el camp Sí/No té l'estat "Sí" o "Activat" (seleccionat en color negre).
No | . | =0 torna tots els registres per als quals el camp Sí/No té l'estat "No" o "Desactivat" (sense selecció).
Nul | IS NULL | IS NULL torna tots els registres per als quals el camp Sí/No no té l'estat Sí ni l'estat No (seleccionat en color gris).

La sintaxi depèn del sistema de bases de dades utilitzat. Noteu també que els camps Sí/No es poden definir de manera diferenciada (amb només 2 estats en comptes de 3).

### Consultes amb paràmetres

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

Parameter names may not contain any of the characters <space>`!"$%^*()+={}[]@'~#<>?/,. They may not be the same as field names or SQL reserved words. They may be the same as aliases.

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àmetres

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.

## Mode SQL

La sigla SQL correspon a l'anglés "Structured Query Language" (llenguatge d'interrogació estructurat). Es tracta d'un llenguatge que dóna instruccions per a l'actualització i la gestió de bases de dades relacionals.

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.