LibreOffice 24.8 Hjelp
Spørringsdesign-visning lar deg opprette og redigere en databasespørring.
De fleste databaser bruker spørringer til å filtrere eller sortere databasetabeller for å vise poster på datamaskinen. Visninger tilbyr samme funksjonalitet som spørringer, men på serversiden. Hvis databasen din er på en server som støtter visninger, kan du bruke visninger til å filtrere postene på serveren for å øke hastigheten på visningen.
Ved å velge kommandoen Skap visning fra Tabeller-fanesiden i et databasedokument, ser du vinduet Visningsdesign Design som ligner Spørringsdesign -vinduet beskrevet her.
Spørringsdesign-oppsettet lagres med en opprettet spørring, men kan ikke lagres med en opprettet visning.
For å opprette en spørring, klikk på Spørrings-ikonet i et databasedokument, og klikk deretter på Opprett spørring i designvisning.
Den nedre ruten i designvisningen er der du definerer spørringen. For å definere en spørring, spesifiser du databasefeltnavnene som skal inkluderes og kriteriene for visning av feltene. For å omorganisere kolonnene i den nedre ruten i designvisningen, dra en kolonneoverskrift til en ny plassering, eller velg kolonnen og trykk +piltast.
Øverst i søkedesignvisningsvinduets, ikoner i Spørringsdesign-linjen og Design-linjen vises.
Hvis du vil teste en spørring, dobbeltklikker du på spørringsnavnet i databasedokumentet. Spørringsresultatet vises i en tabell som ligner på datakildevisningen. Merk: tabellen som vises er bare midlertidig.
| Nøkkel | Funksjon | 
|---|---|
| F4 | Forhåndsvisning | 
| F5 | Kjør Spørring | 
| F7 | Legg til Tabell eller Spørring | 
Når du åpner spørringsdesignet for første gang, ser du en dialogboks der du først må velge tabellen eller spørringen som skal være grunnlaget for den nye spørringen.
Dobbeltklikk på feltene for å legge dem til i spørringen. Dra og slipp for å definere relasjoner.
Mens du designer en spørring, kan du ikke endre de valgte tabellene.
For å fjerne tabellen fra Design visning, klikk på den øvre kanten av tabellvinduet og vis kontekstmenyen. Du kan bruke kommandoen Slett for å fjerne tabellen fra designvisningen. Et annet alternativ er å trykke på Slett-tasten.
Du kan endre størrelse og ordne bordene i henhold til dine preferanser. For å flytte tabeller, dra den øvre rammen til ønsket posisjon. Forstørr eller reduser størrelsen tabellen vises i ved å plassere musepekeren på en kant eller på et hjørne og dra tabellen til den har ønsket størrelse.
Hvis det er datarelasjoner mellom et feltnavn i en tabell og et feltnavn i en annen tabell, kan du bruke disse relasjonene for spørringen.
Hvis du for eksempel har et regneark for artikler identifisert med et artikkelnummer, og et regneark for kunder der du registrerer alle artiklene som en kunde bestiller med de tilsvarende artikkelnumrene, så er det en sammenheng mellom de to "artikkelnummeret" datafelt. Dersom du nå ønsker å lage en spørring som returnerer alle artikler som en kunde har bestilt, må du hente data fra to regneark. For å gjøre dette må du informere LibreOffice om forholdet som eksisterer mellom dataene i de to regnearkene.
For å gjøre dette, klikk på et feltnavn i en tabell (for eksempel feltnavnet "Varenummer" fra kundetabellen), hold nede museknappen og dra deretter feltnavnet til feltnavnet til den andre tabellen (" Item-Number" fra varetabellen). Når du slipper museknappen, vises en linje som forbinder de to feltene mellom de to tabellvinduene. Den tilsvarende betingelsen om at innholdet i de to feltnavnene må være identiske, angis i den resulterende SQL-spørringen.
Opprettelsen av en spørring som er basert på flere relaterte ark er kun mulig hvis du bruker LibreOffice som grensesnitt for en relasjonsdatabase.
Du kan ikke få tilgang til tabeller fra forskjellige databaser i en spørring. Spørringer som involverer flere tabeller kan bare opprettes i én database.
Hvis du dobbeltklikker på linjen som forbinder to koblede felt eller kaller menykommandoen Sett inn - Ny Relasjon, kan du spesifisere type relasjon i Relasjoner dialog.
Alternativt kan du trykke Tab til linjen er valgt, deretter trykke Shift+F10 for å vise kontekstmenyen og der velge kommandoen Rediger . Noen databaser støtter bare et undersett av de mulige jointypene.
For å slette en relasjon mellom to tabeller, klikk på tilkoblingslinjen og trykk deretter på Delete-tasten.
Alternativt kan du slette de respektive oppføringene i Involvert felt i Relasjoner-dialogen. Eller trykk Tab til koblingsvektoren vises uthevet, trykk deretter Shift+F10 for å åpne kontekstmenyen og velg Slett kommando.
Velg betingelser for å definere spørringen. Hver kolonne i designtabellen godtar et datafelt for spørringen. Betingelsene i én rad er knyttet til en boolsk OG.
Først velger du alle feltnavn fra tabellene du vil legge til i spørringen. Du kan gjøre dette enten ved å dra-og-slippe eller ved å dobbeltklikke på et feltnavn i tabellvinduet. Med dra-og-slipp-metoden bruker du musen til å dra et feltnavn fra tabellvinduet til det nedre området av spørringsdesignvinduet. Mens du gjør dette, kan du bestemme hvilken kolonne i spørringsdesignvinduet som skal motta det valgte feltet. Et feltnavn kan også velges ved å dobbeltklikke. Den vil deretter bli lagt til i neste ledige kolonne i spørringsdesignvinduet.
For å fjerne et feltnavn fra spørringen, klikk på kolonneoverskriften til feltet og velg kommandoen Slett i kontekstmenyen for kolonnen.
Bruk Lagre-ikonet på standardverktøylinjen for å lagre spørringen. Du vil se en dialogboks som ber deg angi et navn for spørringen. Hvis databasen støtter skjemaer, kan du også angi et skjemanavn.
Skriv inn navnet på skjemaet som er tilordnet spørringen eller tabellvisningen.
Skriv inn navnet på spørringen eller tabellvisningen.
For å filtrere data for spørringen, angi de ønskede kriteriene i det nedre området av spørringsdesignvinduet. Følgende alternativer er tilgjengelige:
Skriv inn navnet på datafeltet som det refereres til i spørringen. Alle innstillinger som er gjort i filteralternativradene refererer til dette feltet. Hvis du aktiverer en celle her med et museklikk, vil du se en pilknapp som lar deg velge et felt. Alternativet "Tabellnavn.*" velger alle datafelt med den effekten at de angitte kriteriene vil bli brukt på alle tabellfelt.
Spesifiserer et alias. Dette aliaset vil bli oppført i spørringen i stedet for feltnavnet. Dette gjør det mulig å bruke brukerdefinerte kolonneetiketter. Hvis for eksempel datafeltet heter PtNo og du i stedet for det navnet ønsker at PartNum skal vises i spørringen, skriv inn PartNum som alias.
I en SQL-setning er aliaser definert som følger:
SELECT column AS alias FROM table.
For eksempel
SELECT "PtNo" AS "PartNum" FROM "Parts"
Den korresponderende databasetabellen for det valgte datafeltet er oppført her. Hvis du aktiverer denne cellen med et museklikk, vil en pil vises som lar deg velge en annen tabell for gjeldende spørsmål.
Hvis du klikker på denne cellen, kan du velge et sorteringsalternativ: stigende, synkende og usortert. Tekstfelt vil bli sortert alfabetisk og numeriske felt numerisk. For de fleste databaser kan administratorer angi sorteringsalternativene på databasenivå.
Hvis du merker egenskapen Synlig for et datafelt, vil det feltet vises synlig i den resulterende spørringen. Hvis du kun bruker et datafelt til å formulere en betingelse eller foreta en beregning, trenger du ikke nødvendigvis å vise det.
Spesifiserer et første kriterium som innholdet i datafeltet skal filtreres etter.
Her kan du legge inn ett ekstra filterkriterium for hver linje. Flere kriterier i en enkelt kolonne vil bli tolket som boolsk ELLER.
Du kan også bruke kontekstmenyen til linjeoverskriftene i det nedre området av spørringsdesignvinduet for å sette inn et filter basert på en funksjon:
Funksjonene som er tilgjengelige her avhenger av de som støttes av databasemotoren.
Hvis du arbeider med den innebygde HSQL-databasen, gir listeboksen i Funksjon-raden deg følgende alternativer:
| Alternativ | SQL | Effekt | 
|---|---|---|
| Ingen funksjon | Ingen funksjon vil bli kjørt | |
| Gjennomsnittlig | AVG | Beregner det aritmetiske gjennomsnittet av et felt. | 
| Tell | COUNT | Bestemmer antall poster i tabellen. Tomme felt kan enten telles (a) eller ekskluderes (b). a) COUNT(*): Ved å sende en stjerne som argument teller alle poster i tabellen. b) ANTALL(kolonne): Ved å sende et feltnavn som argument, teller kun postene der det angitte feltet inneholder en verdi. Poster der feltet har en null-verdi (dvs. inneholder ingen tekstlig eller numerisk verdi) telles ikke. | 
| Maksimum | MAX | Bestemmer den høyeste verdien av en post for det feltet. | 
| Minimum | MIN | Bestemmer den laveste verdien av en post for det feltet. | 
| Sum | SUM | Beregner summen av verdiene til poster for de tilknyttede feltene. | 
| Gruppering | GROUP BY | Grupperer spørredata i henhold til det valgte feltnavnet. Funksjoner utføres i henhold til de angitte gruppene. I SQL tilsvarer dette alternativet GROUP BY-leddet. Hvis et kriterium legges til, vises denne oppføringen i SQL HAVING-delsetningen. | 
Du kan også legge inn funksjonskall direkte i SQL-setningen. Syntaksen er:
SELECT FUNCTION(column) FROM table.
For eksempel er funksjonskallet i SQL for å beregne en sum:
SELECT SUM("Price") FROM "Article".
Bortsett fra Grupperings-funksjonen, kalles funksjonene ovenfor Aggregerings-funksjoner. Dette er funksjoner som beregner data for å lage sammendrag fra resultatene. Ytterligere funksjoner som ikke er oppført i listeboksen kan også være mulig. Disse avhenger av den spesifikke databasemotoren som er i bruk og av gjeldende funksjonalitet levert av Base-driveren som brukes til å koble til den databasemotoren.
For å bruke andre funksjoner som ikke er oppført i listeboksen, må du angi dem manuelt under Felt.
Du kan også tilordne aliaser til funksjonsanrop. Hvis du ikke vil vise søkestrengen i kolonneoverskriften, skriv inn et ønsket erstatningsnavn under Alias.
Den tilsvarende funksjonen i en SQL-setning er:
SELECT FUNCTION() AS alias FROM table
Eksempel:
SELECT COUNT(*) AS count FROM "Item"
Hvis du kjører en slik funksjon, kan du ikke sette inn noen ekstra kolonner for spørringen annet enn som et argument i en "Grupperings"-funksjon.
Eksempler
I følgende eksempel kjøres en spørring gjennom to tabeller: en "Vare"-tabell med "Vare_nr"-feltet og en "Leverandører"-tabell med "Leverandørnavn"-feltet. I tillegg har begge tabellene et felles feltnavn "Supplier_No."
Følgende trinn kreves for å opprette en spørring som inneholder alle leverandører som leverer mer enn tre varer.
Sett inn "Item" og "Suppliers"-tabellene i spørringsdesignet.
Koble sammen "Supplier_No"-feltene til de to tabellene hvis det ikke allerede er en relasjon av denne typen.
Dobbeltklikk på "Item_No"-feltet fra "Item"-tabellen. Vis Funksjon-linjen ved hjelp av kontekstmenyen og velg Count-funksjonen.
Skriv inn >3 som et kriterium og deaktiver feltet Synlig.
Dobbeltklikk på "Supplier_Name"-feltet i "Suppliers"-tabellen og velg Grupperings-funksjonen.
Kjør spørringen.
Hvis feltene "pris" (for den individuelle prisen på en artikkel) og "Supplier_No" (for leverandøren av artikkelen) finnes i tabellen "Vare", kan du få gjennomsnittsprisen på varen fra en leverandør med følgende spørring:
Sett inn "Item"-tabellen i spørringsdesignet.
Dobbeltklikk på "Price" og "Supplier_No"-feltene.
Aktiver Funksjon-linjen og velg Gjennomsnittsfunksjonen fra "Price"-feltet.
Du kan også skrive inn "Gjennomsnitt" på linjen for aliasnavnet (uten anførselstegn).
Velg Gruppe for "Supplier_No"-feltet.
Kjør spørringen.
Følgende kontekstmenykommandoer og symboler er tilgjengelige:
Viser eller skjuler en rad for et valg av funksjoner.
Viser eller skjuler raden for tabellnavnet.
Viser eller skjuler raden for aliasnavnet.
Henter kun distinkte verdier fra spørringen. Dette gjelder for flere poster som kan inneholde flere gjentatte forekomster av data i de valgte feltene. Hvis kommandoen Distinkte verdier er aktiv, skal du bare se én post i spørringen (DISTINCT). Ellers vil du se alle poster som tilsvarer søkekriteriene (ALLE).
For eksempel, hvis navnet "Smith" forekommer flere ganger i adressedatabasen din, kan du velge kommandoen Distinkte Verdier for å spesifisere i spørringen at navnet "Smith" bare vil forekomme én gang.
For en spørring som involverer flere felt, må kombinasjonen av verdier fra alle felt være unik slik at resultatet kan dannes fra en spesifikk post. For eksempel har du "Smith i Chicago" én gang i adresseboken din og "Smith i London" to ganger. Med kommandoen Distinkte Verdier vil spørringen bruke de to feltene "etternavn" og "by" og returnere søkeresultatet "Smith i Chicago" én gang og "Smith i London" én gang.
I SQL tilsvarer denne kommandoen DISTINCT-predikatet.
Lar deg begrense det maksimale antallet poster som returneres av et søk.
Hvis en Limit-konstruksjon legges til, vil du få maksimalt like mange rader som antallet du spesifiserer. Ellers vil du se alle poster som tilsvarer søkekriteriene.
Når du formulerer filterbetingelser, er ulike operatorer og kommandoer tilgjengelige for deg. Bortsett fra relasjonsoperatørene, er det SQL-spesifikke kommandoer som spør etter innholdet i databasefeltene. Hvis du bruker disse kommandoene i LibreOffice-syntaksen, konverterer LibreOffice disse automatisk til den tilsvarende SQL-syntaksen via en intern parser. Du kan også skrive inn SQL-kommandoen direkte og omgå den interne parseren. Følgende tabeller gir en oversikt over operatørene og kommandoene:
| Operatør | Betydning | Betingelsen er oppfylt dersom... | 
|---|---|---|
| = | lik | ... innholdet i feltet er identisk med det angitte uttrykket. Operatoren = vil ikke vises i søkefeltene. Hvis du angir en verdi uten noen operator, blir = operatoren automatisk antatt. | 
| <> | ikke lik | ... innholdet i feltet samsvarer ikke med det angitte uttrykket. | 
| > | større enn | ... innholdet i feltet er større enn det angitte uttrykket. | 
| < | mindre enn | ... innholdet i feltet er mindre enn det angitte uttrykket. | 
| >= | større enn eller lik | ... innholdet i feltet er større enn eller lik det angitte uttrykket. | 
| <= | mindre enn eller lik | ... innholdet i feltet er mindre enn eller lik det angitte uttrykket. | 
| ='Ms.' | returnerer feltnavn med feltinnholdet "Ms." | 
| <'2001-01-10' | returnerer datoer fra før 10. januar 2001 | 
| LIKE 'g?ve' | returnerer poster med feltinnhold som "give" og "gave". | 
| LIKE 'S*' | returnerer poster med feltinnhold som "Sun". | 
| BETWEEN 10 AND 20 | returnerer poster med feltinnehold mellom verdiene 10 og 20. (Feltene kan enten være tekstfelt eller tallfelt). | 
| IN (1; 3; 5; 7) | returnerer poster med verdiene 1, 3, 5, 7. Hvis feltnavnet for eksempel inneholder et varenummer, kan du opprette en spørring som returnerer varen med det angitte nummeret. | 
| NOT IN ('Smith') | returnerer poster som ikke inneholder "Smith". | 
Som Escape Sekvens: {escape 'escape-tegn'}
SELECT * FROM Item WHERE ItemName LIKE 'The *%' {escape '*'}
Eksemplet vil gi deg alle oppføringene der elementnavnet begynner med 'The *'. Dette betyr at du også kan søke etter tegn som ellers ville blitt tolket som plassholdere, for eksempel *, ?, _, % eller punktum.
Outer Join Escape-sekvens: {oj outer-join}
SELECT Article.* FROM {oj item LEFT OUTER JOIN orders ON item.no=orders.ANR}
For spørring av innholdet i et tekstfelt, må du sette uttrykket mellom enkle anførselstegn. Skillet mellom store og små bokstaver avhenger av databasen som brukes. LIKE, per definisjon, skiller mellom store og små bokstaver (selv om noen databaser ikke tolker dette strengt).
Datofelt er representert som #Dato# for å tydelig identifisere dem som datoer. Dato, klokkeslett og dato/tidskonstanter (bokstaver) som brukes i forhold kan enten være av typen SQL Escape-syntaks eller standard SQL2-syntaks.
| Dato Type Element | SQL Escape-syntaks #1 - kan være foreldet | SQL Escape-syntaks #2 | SQL2 syntaks | 
|---|---|---|---|
| Dato | {D'YYYY-MM-DD'} | {d 'YYYY-MM-DD'} | 'YYYY-MM-DD' | 
| Klokkeslett | {D'HH:MM:SS'} | {t 'HH:MI:SS[.SS]'} | 'HH:MI:SS[.SS]' | 
| DatoKlokkeslett | {D'YYYY-MM-DD HH:MM:SS'} | {ts 'YYYY-MM-DD HH:MI:SS[.SS]'} | 'YYYY-MM-DD HH:MI:SS[.SS]' | 
SELECT {d '1999-12-31'} FROM world.years
SELECT * FROM mytable WHERE years='1999-12-31'
Alle datouttrykk (datobokstaver) må omsluttes av enkle anførselstegn. (Se referansen for den aktuelle databasen og koblingen du bruker for mer informasjon.)
For å spørre Ja/Nei-felt, bruk følgende syntaks for dBASE-tabeller:
| Status | Søkekriterium | Eksempel | 
|---|---|---|
| Ja | for dBASE-tabeller: ikke lik noen gitt verdi | =1 returnerer alle poster der Ja/Nei-feltet har statusen "Ja" eller "På" (valgt i svart), | 
| Nei | . | =0 returnerer alle poster der Ja/Nei-feltet har statusen "Nei" eller "Av" (ingen valgt). | 
| Null | IS NULL | IS NULL returnerer alle poster der Ja/Nei-feltet ikke har noen av tilstandene Ja eller Nei (valgt i grått). | 
Syntaksen avhenger av databasesystemet som brukes. Du bør også merke deg at Ja/Nei-felt kan defineres annerledes (kun 2 tilstander i stedet for 3).
Parameterspørringer lar brukeren legge inn verdier under kjøring. Disse verdiene brukes innenfor kriteriene for å velge postene som skal vises. Hver slik verdi har et parameternavn knyttet til seg, som brukes til å spørre brukeren når spørringen kjøres.
Parameternavn innledes med et kolon i både design- og SQL-visningen av en spørring. Dette kan brukes der en verdi kan vises. Hvis samme verdi skal vises mer enn én gang i spørringen, brukes samme parameternavn.
I det enkleste tilfellet, der brukeren legger inn en verdi som er matchet for likhet, legges parameternavnet med det foregående kolon inn i Kriterium-raden. I SQL-modus skal dette skrives inn som WHERE "Field" = :Parameter_name
Parameternavn kan ikke inneholde noen av tegnene <space>`!"$%^*()+={}[]@'~#<>?/,. De kan ikke være like feltnavn eller reserverte SQL-ord. De kan være de samme som aliaser.
En nyttig konstruksjon for å velge poster basert på deler av et tekstfelts innhold, er å legge til en skjult kolonne med "LIKE '%' || :Part_of_field || '%'" som kriterium. Dette vil velge poster med eksakt samsvar. Hvis en test som ikke skiller mellom store og små bokstaver ønskes, er en løsning å bruke LOWER (Field_Name) som felt og LIKE LOWER ( '%' || :Part_of_field || '%' ) som kriterium. Merk at mellomrommene i kriteriet er viktige; hvis de utelates, tolker SQL-parseren hele kriteriet som en streng som skal matches. I SQL-modus skal dette skrives inn som LOWER ( "Field_Name") LIKE LOWER ( '%' || :Part_of_field || '%' ).
Parameterspørringer kan brukes som datakilde for underskjemaer, for å tillate brukeren å begrense de viste postene.
Dialogboksen Parameterinndata ber brukeren angi parameterverdiene. Skriv inn en verdi for hvert søkeparameter og bekreft ved å klikke OK eller trykke Enter.
Verdiene som legges inn av brukeren kan bestå av alle tegn som er tillatt for SQL for det relevante kriteriet; dette avhenger av det underliggende databasesystemet.
Brukeren kan bruke SQL-jokertegnene "%" (vilkårlig streng) eller "_" (vilkårlig enkelttegn) som en del av verdien for å hente poster med mer komplekse kriterier.
SQL står for "Structured Query Language" og beskriver instruksjoner for oppdatering og administrering av relasjonsdatabaser.
I LibreOffice trenger du ingen kunnskap om SQL for de fleste spørringer, siden du ikke trenger å skrive inn SQL-koden. Hvis du oppretter en spørring i spørringsdesigneren, konverterer LibreOffice automatisk instruksjonene dine til den tilsvarende SQL-syntaksen. Hvis du ved hjelp av Design Visning På/Av-knappen bytter til SQL-visningen, og du kan se SQL-kommandoene for en spørring som allerede er opprettet.
Du kan formulere spørringen direkte i SQL-kode. Vær imidlertid oppmerksom på at den spesielle syntaksen er avhengig av databasesystemet du bruker.
Hvis du skriver inn SQL-koden manuelt, kan du lage SQL-spesifikke spørringer som ikke støttes av det grafiske grensesnittet i Spøøre designeren. Disse spørringene må utføres i naturlig SQL-modus.
Ved å klikke påKjør SQL-kommando direkte i SQL-visningen, kan du formulere en spørring som ikke behandles av LibreOffice og sendes direkte til databasemotoren.