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

En una finestra d'un fitxer de base de dades, feu clic a la icona Consultes, després trieu Edita ▸ Edita

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.

La subfinestra que hi ha a la part inferior de la Vista de disseny és l'espai on heu de definir la consulta. Per definir una consulta, indiqueu els noms dels camps de la base de dades que vulgueu incloure i els criteris per a la visualització d'estos camps. Si voleu reorganitzar les columnes d'esta subfinestra arrossegueu una capçalera de columna fins a una nova posició o seleccioneu la columna i premeu OrdeCtrl
+tecla de cursor.

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.

Així, si per exemple disposeu, d'una banda, d'un full de càlcul per a articles identificats amb un número d'article i, de l'altra, d'un altre full de càlcul per a clients en el qual registreu tots els articles que estos clients sol·liciten mitjançant els números d'article corresponents, hi haurà una relació entre els dos camps de dades "número d'article". D'esta manera, si voleu crear una consulta que torne tots els articles sol·licitats per un client, haureu de recuperar les dades corresponents dels dos fulls de dades. Per fer-ho, haureu d'indicar al LibreOffice que existeix una relació entre les dades dels dos fulls de càlcul.

Per indicar esta relació, feu clic al nom d'un camp d'una taula (per exemple, al nom del camp "Número-article" de la taula Clients), manteniu premut el botó del ratolí i arrossegueu el nom del camp fins a l'altra taula (fins a "Número-article" de la taula Articles). Quan deixeu anar el botó del ratolí, apareixerà una línia que connectarà els dos camps de les dues finestres. La condició corresponent, segons la qual els dos noms de camp hauran de ser idèntics, s'introduirà a la consulta SQL resultant.

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.

### Especificació del tipus d'enllaç

Si feu doble clic a la línia que connecta els dos camps enllaçats o crideu l'orde de menú Insereix - Relació nova s'obrirà el diàleg Relacions, que vos permet especificar el tipus d'enllaç.

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.

## Definició de la consulta

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.

### Especificació de noms de camp

En primer lloc, seleccioneu tots els noms dels camps de les taules que vulgueu afegir a la consulta. Per fer-ho, podeu arrossegar i deixar anar o bé fer doble clic a un nom de camp a la finestra de la taula. Si opteu pel primer mètode, utilitzeu el ratolí per arrossegar un nom de camp des de la finestra de la taula fins a l'àrea inferior del disseny de la consulta. D'esta manera, podreu decidir a quina columna voleu afegir el camp. Seleccioneu un nom de camp fent-hi doble clic per tal que s'afija a la columna lliure següent.

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

### Guardar una consulta

Utilitzeu la icona Guarda de la barra Estàndard per guardar la consulta. Visualitzareu un diàleg que vos sol·licitarà un nom per a la consulta. Si la base de dades admet esquemes, també en podreu indicar un.

#### 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

Per filtrar les dades per a la consulta, definiu les preferències desitjades a l'àrea inferior de la Vista de disseny. Disposareu de les línies següents:

#### Camps

Introduïu el nom del camp de dades al qual heu fet referència a la consulta. Tots els paràmetres indicats a les files inferiors fan referència a este camp. Si activeu una cel·la fent-hi clic amb el ratolí visualitzareu un botó de cursor, amb el qual podreu seleccionar un camp. L'opció "Nom de la taula.*" vos permet seleccionar tots els camps de dades i els criteris seran vàlids per a tots els camps de la taula.

#### Àlies

Especifica un àlies. Este àlies es llistarà en una consulta en lloc del nom del camp, amb la qual cosa es podran utilitzar etiquetes de columnes definides per l'usuari. Per exemple, introduïu PartNum com a àlies si el camp de dades s'anomena PtNo però preferiu que a la consulta aparega PartNum.

En una expressió SQL, els àlies es defineixen de la manera següent:

SELECT column AS alias FROM table.

Per exemple:

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

#### Taula

Ací es llista la taula de la base de dades corresponent al camp de dades seleccionat. Si activeu una cel·la de la taula fent-hi clic amb el ratolí, apareixerà una fletxa que vos permetrà seleccionar una altra taula de la consulta actual.

#### Ordena

Si feu clic a la cel·la, podreu seleccionar una de les opcions d'ordenació: ascendent, descendent o sense ordenar. Els camps de text s'ordenaran de manera alfabètica, i els numèrics de manera numèrica. Els administradors poden definir les opcions d'ordenació per a la majoria de bases de dades.

#### Visible

Si activeu la propietat Visible per a un camp de dades, este camp serà visible a la consulta. Noteu que si utilitzeu un determinat camp de dades només per formular una condició, no sempre serà necessari mostrar-lo.

#### Criteris

Especifica els criteris pels quals cal filtrar els continguts del camp de dades.

#### o

Ací podeu introduir un criteri addicional per al filtratge en cada línia. Els criteris múltiples per a una columna quedaran connectats mitjançant un enllaç OR.

També podeu utilitzar el menú contextual de les capçaleres de línia a la part inferior del disseny de la consulta per inserir una altra línia per a funcions:

### Funcions

Les funcions que podreu executar dependran de la base de dades.

Si treballeu amb la base de dades HSQL, el quadre de llista de la línia Funció vos oferirà les opcions següents:

Opció | SQL | Efecte
Cap funció |  | No s'executarà cap funció.
Mitjana | AVG | Calcula la mitjana aritmètica d'un camp.
Compta | COUNT | Determina el nombre de registres de la taula. Els camps buits es poden comptar (a) o no (b). a) COUNT(*): si s'indica un asterisc com a argument es comptaran tots els registres de la taula. b) COUNT(columna): si s'indica un nom de camp com a argument només es comptaran els camps els noms dels quals continguen un valor. No es comptaran els valors nuls (és a dir, els camps buits).
Màxim | MAX | Determina el valor més alt d'un camp.
Mínim | MIN | Determina el valor més baix d'un camp.
Suma | SUM | Calcula la suma de valors dels camps associats.
Agrupa | GROUP BY | Agrupa les dades de la consulta d'acord amb el nom de camp seleccionat. Les funcions s'executen d'acord amb els grups indicats. A l'SQL, esta opció correspon a la clàusula GROUP BY. Si s'afig un criteri, esta entrada apareix a la clàusula SQL HAVING.

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

Tret d'Agrupa, la resta de funcions indicades anteriorment reben la denominació de funcions d'agregats. Este tipus de funcions calculen dades per crear resums dels seus resultats. Segons el tipus de sistema de bases de dades que s'utilitze i l'estat actual del controlador del Base, també es podran utilitzar altres funcions addicionals que no apareguen en el quadre de llista.

Si voleu utilitzar altres funcions que no apareguen en el quadre de llista, les haureu d'introduir a Camp.

També podeu assignar àlies a les crides de funció. Si la consulta no s'ha de visualitzar a la capçalera de columna, introduïu-ne el nom desitjat a Àlies.

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

SELECT FUNCTION() AS alias FROM table

Exemple:

SELECT COUNT(*) AS count FROM "Item"

Si executeu esta funció, no podreu inserir cap columna addicional per a la consulta i només rebreu estes columnes com a funció "Agrupa".

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. Feu doble clic al camp "Núm_Element" de la taula "Element". Feu que es mostre la línia Funció mitjançant el menú contextual i seleccioneu la funció Compta.

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

Mostra o amaga una fila per a una selecció de funcions.

### 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

Només aplica valors diferents a la consulta. S'aplica als registres que contenen dades que apareixen diverses vegades en els camps seleccionats. Si l'orde Valors diferents és activa, només visualitzareu un registre a la consulta (DISTINCT). En cas contrari, visualitzareu tots els registres corresponents als criteris de la consulta (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

Vos permet maximitzar el nombre de registres que retorna la consulta.

If there is added a Limit, 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

Disposeu de diversos operadors i ordes per formular condicions de filtratge. A banda dels operadors relacionals, disposeu d'una sèrie d'ordes SQL específiques per consultar els continguts dels camps de la base de dades. Si utilitzeu estes ordes en la sintaxi del LibreOffice, el LibreOffice les convertirà a la sintaxi SQL corresponent de manera automàtica. També podeu introduir estes ordes SQL directament. Les taules següents vos ofereixen una visió general d'estos operadors i ordes:

Operador | Definició | La condició es compleix si...
= | igual a | ... el contingut del camp és idèntic a l'expressió indicada. L'operador = no es mostrarà en els camps de la consulta. Si introduïu un valor sense cap operador, s'interpretarà l'operador = de manera automàtica.
<> | 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 value of the field is empty. For Yes/No fields with three states, this command automatically queries the undetermined state (neither Yes nor No).
IS NOT EMPTY | IS NOT NULL | no és buit | ... el nom del camp no és buit.
LIKE (utilitzeu l'espai reservat * per a un nombre de caràcters indeterminat, o bé l'espai reservat ? per a un sol caràcter) | LIKE (utilitzeu l'espai reservat % per a qualsevol nombre de caràcters, o bé l'espai reservat _ per a un sol caràcter) | és un element de | ... el camp de dades conté l'expressió indicada. L'espai reservat (*) indica si l'expressió x apareix al principi del contingut del camp (x*), al final (*x) o dins d'este (*x*). Quan treballeu amb consultes SQL a la interfície del LibreOffice podeu utilitzar com a espais reservats tant el caràcter SQL % com l'espai reservat habitual del sistema de fitxers, (*). Els espais reservats * i % fan referència a qualsevol nombre de caràcters. Si voleu representar un sol caràcter, podeu utilitzar el signe d'interrogació (?) a la interfície del LibreOffice o la ratlla baixa (_) a les consultes SQL.
NOT LIKE | NOT LIKE | no és un element de | ... el nom del camp no conté l'expressió indicada.
BETWEEN x AND y | BETWEEN x AND y | es troba dins l'interval [x,y] | ... el nom del camp conté un valor que es troba entre els valors x i y.
NOT BETWEEN x AND y | NOT BETWEEN x AND y | No es troba dins l'interval [x,y] | ... el nom del camp conté un valor que no es troba entre els valors x i y.
IN (a; b; c...) Noteu que s'utilitzen signes de punt i coma com a separadors a totes les llistes de valors. | IN (a, b, c...) | conté a, b, c... | ... el nom del camp conté una de les expressions a, b, c... indicades. Podeu expressar un nombre d'expressions il·limitat, i el resultat de la consulta queda determinat per un enllaç OR. Les expressions a, b, c... poden ser tant nombres com caràcters.
NOT IN (a; b; c...) | NOT IN (a, b, c...) | no conté a, b, c... | ... el nom del camp no conté una de les expressions a, b, c... indicades.
= TRUE | = TRUE | té el valor True | ... el nom del camp té el valor True.
= FALSE | = FALSE | té el valor False | ... el nom del camp té el valor False.

### Exemples

='Sra.' | retorna els noms de camp que continguen "Sra."
<'2001-01-10' | retorna les dates anteriors al 10 de gener de 2001
LIKE 'c?la' | retorna noms de camp amb continguts com ara "cola" i "cala".
LIKE 'S*' | retorna camps de dades amb continguts com ara "Sol".
BETWEEN 10 AND 20 | retorna noms de camp amb continguts que es troben entre els valors 10 i 20 (els camps poden ser tant numèrics com de text).
IN (1; 3; 5; 7) | retorna noms de camp amb els valors 1, 3, 5, 7. Si, per exemple, el nom de camp conté un número d'element, podeu crear una consulta que torne l'element amb el número especificat.
NOT IN ('Martí') | retorna noms de camp que no continguen "Martí".

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

Per consultar el contingut d'un camp de text, heu d'escriure l'expressió entre cometes simples. La distinció entre majúscules i minúscules dependrà de la base de dades que s'estiga utilitzant. Per definició, LIKE distingeix entre majúscules i minúscules (malgrat que algunes bases de dades no segueixen este criteri estrictament).

### 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 (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.

Si treballeu amb el LibreOffice no necessitareu tindre coneixements d'SQL per a la majoria de consultes, ja que no haureu d'introduir codi SQL. Si creeu una consulta en el disseny de la consulta, el LibreOffice convertirà automàticament les vostres instruccions en la sintaxi SQL corresponent. Podeu utilitzar el botó Commuta la vista de disseny a activa/inactiva per passar a la vista SQL, on podreu visualitzar les ordes SQL per a una consulta que hàgeu creat anteriorment.

També podeu formular una consulta directament en codi SQL. No obstant això, noteu que la sintaxi especial dependrà del sistema de bases de dades que utilitzeu.

Si introduïu el codi SQL manualment, podreu crear consultes específiques per a SQL no admeses per la interfície gràfica al Disseny de la consulta. Estes consultes s'hauran d'executar en mode SQL natiu.

Fent clic a la icona Executa l'orde SQL directament de la vista SQL podreu formular una consulta que no siga processada pel LibreOffice.