Module
Contents
Index 🔎︎

# Sökningsutkast

I Sökningsutkastläge kan du skapa och redigera en databassökning.

Så här använder du det här kommandot...

Klicka på ikonen Sökningar i ett databasfilfönster och välj sedan Redigera - Redigera

De flesta databaser använder frågor för att filtrera eller sortera databastabeller och visa poster. Vyer fungerar på liknande sätt som frågor, men finns på servern. Om databasen finns på en server som stöder vyer, kan du använda vyerna om du vill filtrera posterna på servern så att de visas snabbare.

Om du markerar kommandot Skapa vy på fliken Tabeller i databasdokumentet ser du fönstret Vyutkast som påminner om Sökningsutkast som beskrivs här.

Layouten för fönstret Sökningsutkast sparas med en skapad sökning men kan inte sparas med en skapad vy.

## Vyutkast

Om du vill skapa en sökning klickar du på ikonen Sökning i ett databasdokument och klickar sedan på Utkast till databasformulär.

Den nedre delen av fönstret är den plats där sökningen definieras. När du ska definiera en sökning anger du de fältnamn i databasen som ska tas med och de kriterier som fälten ska uppfylla. Om du vill ändra ordningen bland kolumnerna i den nedre delen av Design-fönstret, drar du ett kolumnhuvud till en ny plats eller markerar kolumnen och trycker på KommandoCtrl
+piltangent.

I den övre delen av fönstret visas ikonerna på verktygsraden Sökningsutkast och Design.

Om du vill testa en sökning dubbelklickar du på sökningens namn i databasdokumentet. Sökningens resultat visas i en tabell. Obs! Tabellen är bara temporär och sparas inte.

### Tangenter i Sökningsutkastläge

Tangent | Funktion
F4 | Förhandsgranskning
F5 | Kör fråga
F7 | Lägg till tabell eller fråga

## Välj ut

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.

Dubbelklicka på ett fält om du vill lägga till det i sökningen. Dra och släpp för att definiera relationer.

När du utformar en sökning går det inte att ändra de valda tabellerna.

### Ta bort tabeller

För att ta bort en tabell från utkastvyn klickar du på tabellfönstrets övre kant och öppnar snabbmenyn. Med kommandot Radera tar du bort tabellen från utkastvyn. Du kan också använda tangenten Delete.

### Flytta tabeller och ändra tabellstorlek

Du kan placera tabellerna som du vill och även ändra deras storlek. När du ska flytta en tabell tar du tag i dess övre kant med musen och drar den till önskad position. För att förstora eller förminska framställningen drar du i kanten eller ett hörn.

## Relationer mellan tabeller

Om det finns datarelationer mellan ett datafält i en tabell och ett datafält i en annan tabell kan du använda de här relationerna för din sökning.

Anta att du har ett kalkylblad med produkter där produkterna identifieras med artikelnummer, och ett annat kalkylbladmed kunder där du använder samma artikelnummer för att registrera vilka produkter som kunden köper. Det finns i det här fallet en s.k. "relation" mellan de två artikelnummerfälten i tabellen. Om du nu vill skapa en sökning som visar information om de produkter som en viss kund har beställt måste du hämta information från båda kalkylbladen. För att göra det måste du tala om för programmet vilken relation som gäller mellan informationen i de två kalkylbladen.

Klicka på ett datafält i en tabell (t.ex. på datafältet "Artikelnummer" från kundtabellen) och dra det sedan, samtidigt som du håller ner musknappen, till datafältet i den andra tabellen ("Artikelnummer" ur artikeltabellen). När du nu släpper musknappen ser du en linje som förbinder de båda fälten i de båda fönstren. I den SQL-sökning som resulterar ur detta anges ett villkor som innebär att innehållet i båda datafälten ska var lika.

Om du ska skapa en databassökning som bygger på flera olika relaterade tabeller måste du använda LibreOffice som gränssnitt för en relationsdatabas.

Det går inte att använda tabeller från olika databaser i en sökning. Sökningar med flera olika tabeller kan bara skapas i en och samma databas.

### Bestämma typ av länkning

Om du dubbelklickar på linjen mellan två länkade fält, eller använder menykommandot Infoga - Ny relation, kan du ange länkens typ i dialogrutan Relationer.

Alternativt trycker du på Tabb-tangenten tills raden är markerad, och trycker sedan på Skift+F10 för att visa snabbmenyn och där välja kommandot Redigera. Vissa databaser har endast stöd för en deluppsättning av de möjliga typerna av sammanslagning.

### Radera relationer

Om du vill radera en relation mellan två tabeller klickar du med musen på förbindelselinjen och trycker sedan på tangenten Delete.

Du kan också markera respektive poster under inkluderade fält i dialogrutan Relationer. Du kan också trycka på Tabb-tangenten tills förbindelselinjen är markerad, trycka på Skift+F10 för att öppna snabbmenyn och välja kommandot Radera.

## Definiera sökning

Välj villkor för att definiera frågan. Varje kolumn i utkasttabellen accepterar ett datafält för frågan. Villkoren i en rad länkas med ett logiskt OCH.

### Definiera datafält

Markera först alla fältnamn i de tabeller som ska ingå i sökningen. Du gör det antingen genom att dra och släppa, eller genom att dubbelklicka på ett fältnamn i tabellfönstret. Om du använder dra-och-släpp använder du musen för att dra ett fältnamn från tabellfönstret till det undre området i sökningsfönstret. När du gör det kan du bestämma i vilken kolumn fältet ska läggas till. Välj ett fältnamn genom att dubbelklicka. Det kommer sedan att läggas till i nästa lediga kolumn.

### Radera datafält

Om Du vill radera ett datafält ur sökningen klickar Du med musen på fältets kolumnhuvud och ge sedan kommandot Radera i kolumnens snabbmeny.

### Spara sökning

Använd ikonen Spara på standardraden när du vill spara frågan. En dialogruta visas där du uppmanas att ange ett namn på frågan. Om databasen stöder scheman kan du också ange ett schema.

#### Schema

Ange namnet på schemat som har tilldelats sökningen eller tabellvyn.

#### Namn på sökning/tabellvy

Ange namnet på sökningen eller tabellvyn.

### Filtrering av data

Om du vill filtrera data för sökningen anger du inställningarna i den nedre delen av designfönstret. Följande rader är tillgängliga:

#### Fält

Ange namnet på det datafält som du refererar till i sökningen. Alla inställningar du gör i de nedre raderna refererar till detta fält. Om du aktiverar en cell genom att klicka med musen visas en pilknapp som du kan använda för att välja ett fält. Alternativet "Tabellnamn.*" väljer alla datafält, och villkoret är giltigt för alla tabellfält.

#### Aliasnamn

Anger ett alias. Ett alias visas i sökningen i stället för fältnamnet. Alias gör det möjligt att använda användardefinierade kolumnrubriker. Om datafältet till exempel har namnet ArtNr och du vill att Artikelnummer ska visas i sökningen skriver du Artikelnummer som alias.

I en SQL-instruktion bestäms aliasnamn på följande sätt:

SELECT column AS alias FROM table.

Till exempel:

SELECT "ArtikelNr" AS Artikel-Nummer FROM "Artikel"

#### Tabell

Den databastabell som hör till det markerade datafältet visas här. Om du aktiverar en cell med musen visas en pilknapp som du kan använda för att välja en annan tabell i den aktuella sökningen.

#### Sortera

Om du klickar på cellen kan du välja mellan de olika sorteringsalternativen: stigande, fallande och ingen sortering. Textfälten sorteras i alfabetisk ordning och de numeriska fälten sorteras i nummerordning. En administratör kan ange sorteringsalternativ för de flesta typer av databaser.

#### Synlig

Om du markerar egenskapen Synlig för ett datafält visas fältet i sökningen. Om du bara använder ett datafält för att formulera ett villkor behöver det inte nödvändigtvis synas.

#### Kriterier

Anger det kriterium som ska användas för att filtrera datainnehållet.

#### eller

Här kan Du ange ett kriterium för filtreringen på varje rad. Flera kriterier i en kolumn länkas med en ELLER-länk.

Därutöver kan Du via radhuvudenas snabbmeny infoga en rad för funktioner i sökningsutkastets nedre del:

### Funktioner

Vilka funktioner som kan köras här beror på databasen.

Om du arbetar med HSQL-databasen finns följande alternativ i listrutan Funktion:

Alternativ | SQL | Effekt
ingen funktion |  | Ingen funktion utförs
Genomsnitt | AVG | Beräknar det aritmetiska medelvärdet hos ett fält.
Antal | COUNT | Anger antalet poster i tabellen. Tomma fält kan ha räknats (a) eller ignorerats (b). a) COUNT(*): Om Du anger en asterisk som argument räknas alla dataposter i tabellen. b) COUNT(column): Om Du anger ett datafält som argument räknas bara de fält i vilka respektive datafält innehåller ett värde. Null-värden (tomma fält) räknas inte med i detta fall.
Maximum | MAX | Beräknar det högsta värdet hos ett fält.
Minimum | MIN | Beräknar det lägsta värdet hos ett fält.
Summa | SUM | Beräknar summan av värdena hos ett fält.
Gruppering | GROUP BY | Grupperar sökningsdata efter det markerade fältnamnet. Funktioner körs enligt angivna grupper. I SQL-terminologi motsvaras det här alternativet av uttrycket GROUP BY. Om ett kriterium används, visas posten i SQL HAVING.

Du kan också ange funktionsanrop direkt i ett SQL-uttryck. Syntaxen är:

SELECT FUNCTION(column) FROM table.

I SQL ser t ex funktionsanropet för beräkning av summa ut på följande sätt:

SELECT SUM("Pris") FROM "Artikel".

Bortsett från funktionen Gruppering rör det sig vid de ovanstående funktionerna om s.k. aggregatfunktioner. Det är funktioner som genom beräkningar sammanfattar data till resultat. Fler funktioner som inte finns med i listrutan är möjliga. Vilka funktioner som är tillgängliga beror på vilket databassystem som används och den aktuella statusen för databasdrivrutinen.

Om du vill använda andra funktioner som inte är medtagna i listrutan måste dessa skrivas in under Fält.

För funktionsanrop kan Du också tilldela aliasnamn. Om sökningen inte ska visa funktionsnamnet i kolumnhuvudet, anger Du önskat namn under Alias.

I en SQL-sats ser ett motsvarande funktionsanrop ut på följande sätt:

SELECT FUNCTION() AS alias FROM table

Exempel:

SELECT COUNT(*) AS Antal FROM "Artikel"

Om Du utför en funktion kan Du inte infoga ytterligare kolumner för sökningen, såvida inte dessa kolumner får funktionen "Gruppering".

Exempel

I följande exempel görs en sökning i två tabeller: tabellen "Artikel" med fältet "Artikel_Nr" och tabellen "Leverantörer" med fältet "Leverantör_Namn". Därutöver har de båda tabellerna det gemensamma datafältet "Leverantör_Nr"

För att kunna skapa en sökning som innehåller alla leverantörer som levererar mer än en artikel krävs följande steg:

1. Infoga tabellen "Artikel" och "Leverantörer" i sökningsutkastet.

2. Länka fälten "Leverantör_Nr" i båda tabellerna, såvida det inte redan finns en motsvarande relation mellan tabellerna.

3. Dubbelklicka på fältet "Artikel_Nr" i tabellen "Artikel". Visa raden Funktion med snabbmenyn och välj funktionen Antal.

4. Ange >3 som kriterium och dölj synlig-fältet.

5. Dubbelklicka på fältet "Leverantör_Namn" från tabellen "Leverantörer" och välj funktionen Gruppering.

6. Kör sökningen.

Om tabellen "Artikel" innehåller fälten "Pris" (pris per styck för en artikel) och "Leverantör_Nr" (för leverantörerna av artiklarna) kan Du räkna fram genomsnittspriset för artiklarna från en leverantör med följande sökning.

1. Infoga tabellen "Artikel" i sökningsutkastet.

2. Dubbelklicka på fälten "Pris" och "Leverantör_Nr".

3. Visa raden Funktion och välj funktionen Genomsnitt vid fältet "Pris".

4. Om så önskas anges aliasnamnet "Genomsnitt" (utan citattecken) på raden för aliasnamn.

5. Vid fältet "Leverantör_Nr" väljs grupperingen.

6. Kör sökningen.

Följande snabbmenykommandon och ikoner finns:

### Funktioner

Visar eller döljer en rad för markering av funktioner.

### Tabellnamn

Visar eller döljer raden för tabellnamnet.

### Aliasnamn

Visar eller döljer raden för aliasnamnet.

### Entydiga värden

Använder endast distinkta värden i sökningen. Detta gäller poster som innehåller data som upprepas flera gånger i de markerade fälten. Om alternativet Entydiga värden är aktivt, kommer bara en post att visas i sökningen (DISTINCT). Annars visas alla poster beroende på om de uppfyller urvalskriteriet (ALL).

Om namnet "Andersson" till exempel förekommer flera gånger i en adressdatabas, kan du använda kommandot Entydiga värden för att ange att namnet "Andersson" endast ska visas en gång i sökningen.

Om sökningen utförs på flera fält, måste kombinationen av värden från alla fält vara unik, så att resultatet kan bilda en specifik post. Anta att adressboken till exempel innehåller "Andersson i Stockholm" en gång, och "Andersson i Göteborg" två gånger. Med alternativet Entydiga värden kommer sökningen att använda de två fälten "efternamn" och "ort" och returnera resultatet "Andersson i Stockholm" en gång och "Andersson i Göteborg" en gång.

I SQL-terminologi motsvarar alternativet predikatet DISTINCT.

### Limit

Sätter en maxgräns för hur många poster som frågan tillåts returnera.

Om du tillför en Limit (begränsning) så kommer du som mest få tillbaka det antal rader som du anger. Om gränsen inte nås så får du tillbaka så många svar som frågan returnerar.

### Skapa filtervillkor

När du skapar filtervillkor kan du använda flera olika operatorer och kommandon. Bortsett från relationsoperatorer finns det flera SQL-specifika kommandon som undersöker innehållet i databasfält. Om du använder dessa kommandon i LibreOffice-syntax, kommer kommandona automatiskt att konverteras till motsvarande SQL-syntax. Du kan också skriva in SQL-kommandon direkt. Följande tabeller ger en översikt över operatorer och kommandon:

Operator | Betydelse | Villkoret är uppfyllt när...
= | lika med | ... fältinnehållet är identiskt med det angivna uttrycket. Operatorn = visas inte i sökningsfälten; om du anger ett värde utan operator används operatorn =.
<> | inte lika med | ... fältinnehållet inte motsvarar det angivna uttrycket.
> | större än | ... fältinnehållet är större än det angivna uttrycket.
< | mindre än | ... fältinnehållet är mindre än det angivna uttrycket.
>= | större än eller lika med | ... fältinnehållet är större än eller lika med det angivna uttrycket.
<= | mindre än eller lika med | ... fältinnehållet är mindre än eller lika med det angivna uttrycket.

LibreOffice-kommando | SQL-kommando | Betydelse | Villkoret är uppfyllt när...
ÄR TOM | IS NULL | är tom | ... 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).
ÄR INTE TOM | IS NOT NULL | är inte tom | ... datafältet är inte tomt.
SOM (Platshållare * för godtyckligt antal tecken Platshållare ? för exakt ett tecken) | SOM (% platshållare för ett godtyckligt antal tecken Platshållare _ för exakt ett tecken) | är del av | ... datafältet innehåller det angivna uttrycket. Platshållare (*) anger om uttrycket x förekommer i början (x*), slutet (*x) eller inom ett fältinnehåll (*x*). Som platshållare kan du i SQL-sökningar ange SQL-tecknet % och i LibreOffice-gränssnittet kan du ange de platshållare du är van vid från filsystemet (*). Platshållaren * eller % står för ett godtyckligt antal tecken. För exakt ett tecken används i LibreOffice-gränssnittet frågetecknet (?) eller i SQL-sökningar understrecket (_) som platshållare.
INTE SOM | INTE SOM | är inte en del av | ... datafältet innehåller angivet uttryck.
MELLAN x OCH y | MELLAN x OCH y | ligger i intervallet [x,y] | ... datafältet innehåller ett värde som ligger mellan de båda värdena x och y
INTE MELLAN x OCH y | INTE MELLAN x OCH y | ligger inte i intervallet [x,y] | ... datafältet innehåller ett värde som inte ligger mellan de båda värdena x och y.
I (a; b; c; ...) Var noga med att semikolon används som skiljetecken i alla värdelistor. | IN (a, b, c...) | innehåller (a, b, c...) | ... datafältet innehåller ett av de angivna uttrycken a, b, c,... Ett godtyckligt antal uttryck kan anges. Sökningsresultatet fås fram med en Eller-länkning. Uttrycken a, b, c... kan vara siffror, men även andra tecken
INTE I (a; b; c; ...) | NOT IN (a, b, c...) | innehåller inte a, b, c... | ... datafältet innehåller inte ett av de angivna uttrycken a, b, c,...
= SANN | = SANN | har värdet True | ... datafältet har värdet True.
= FALSK | = FALSK | har värdet False | ... datafältet har värdet False.

### Exempel

='Kvinna' | returnerar datafält med fältinnehållet "Kvinna".
<'2001-01-10' | returns dates that occurred before January 10, 2001
LIKE 'g?va' | returnerar fältnamn med fältinnehåll som "gåva" och "giva".
SOM 'S*' | returnerar datafält med fältinnehåll som "Sun".
MELLAN 10 OCH 20 | returnerar datafält med fältinnehåll med värden mellan 10 och 20. (Det kan både röra sig om textfält och sifferfält).
I (1; 3; 5; 7) | returnerar datafält med värdena 1, 3, 5, 7. Innehåller datafältet t.ex. ett artikelnummer kan du skapa en sökning som tar fram vissa artiklar med det angivna numret.
INTE I ('Svensson') | returnerar datafält som inte innehåller "Svensson".

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

Exempel: select * from Artikel where Artikelnamn like 'The *%' {escape '*'}

Exemplet ger alla poster där artikelnamnet börjar med "The *". På så sätt kan Du också söka efter tecken som i vanliga fall tolkas som platshållare, t ex *, ?, _, % eller punkt.

Outer Join Escape Sequence: {oj outer-join}

Exempel: select Artikel.* from {oj Artikel LEFT OUTER JOIN Beställningar ON Artikel.Nr=Beställningar.ANR}

### Sökning i textfält

För att söka innehållet i ett textfält ska uttrycket sättas inom enkla citattecken. Det görs ingen åtskillnad mellan versaler och gemener.

### Sökning i datumfält

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.

Date Type Element | SQL Escape syntax #1 - may be obsolete | SQL Escape syntax #2 | SQL2 syntax
Datum | {D'YYYY-MM-DD'} | {d 'YYYY-MM-DD'} | {D'YYYY-MM-DD'}
Tid | {D'HH:MM:SS'} | {t 'HH:MI:SS[.SS]'} | 'HH:MI:SS[.SS]'
Datumtid | {D'YYYY-MM-DD HH:MM:SS'} | {ts 'YYYY-MM-DD HH:MI:SS[.SS]'} | 'YYYY-MM-DD HH:MI:SS[.SS]'

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

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

### Sökningar i Ja/Nej-fält

Om du vill söka i Ja/Nej-fält använder du följande syntax för dBASE-tabellerna:

Tillstånd | Sökningskriterium | Exempel
Ja | för dBASE-tabeller: motsvarar inte något angivet värde | =1 ger alla dataposter för vilka Ja/Nej-fältet har tillståndet "Ja" eller "Till" (svart markering)
Nej | . | .
Tom | IS NULL | IS NULL ger alla dataposter för vilka Ja/Nej-fältet inte intar något av tillstånden Ja eller Nej (grå markering).

Den exakta syntaxen beror på vilket databassystem som används. Du bör lägga märke till att Ja/Nej-fält kan skilja sig åt mellan olika system (2 tillstånd eller 3).

### Parametersökningar

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.

### Parameterinmatning

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.

## SQL-läge

SQL står för "Structured Query Language" och är ett språk som används för att ställa frågor till, uppdatera och hantera relationsdatabaser.

När du arbetar med sökningar i LibreOffice behöver du oftast inte känna till SQL, eftersom du inte skriver in SQL-koden direkt. Om du skapar en sökning i designvyn, konverterar LibreOffice automatiskt dina instruktioner till motsvarande SQL-syntax. Du kan använda knappen Sätt på/stäng av designvy för att växla till SQL-vy och granska de SQL-kommandon som programmet genererat.

Du kan formulera en sökning direkt i SQL-koden. Observera dock att den särskilda syntaxen beror på vilket databassystem du använder.

Om du matar in SQL-koden manuellt kan du skapa SQL-specifika sökningar som inte stöds av det grafiska gränssnittet i Sökningsutkastet. De här sökningarna måste i göras i Native-SQL-läge.

Om du klickar på ikonen Utför SQL-kommando direkt i SQL-vyn, kan du skriva in en sökning direkt.