Redigera SQL-uttryck för att skärpa frågeresultat

Om dina frågor inte arbetar tillräckligt hårt kan du lägga till några grundläggande SQL-uttryck för att fokusera resultaten. Vi tittar på några olika typer av SQL-uttryck och vilka satser eller delar som du kan redigera för att få det resultat du vill ha.

Obs!:  Den här artikeln gäller inte för Access-webbappar – den sortens databas som du utformar med Access och publicerar online.

Artikelinnehåll

Skapa ett Select-uttryck

Ett SQL Select-uttryck har två till tre satser. SELECT-satsen talar om för databasen var de ska leta efter data och uppmanar den att returnera ett visst resultat.

Obs!:  SELECT-uttryck avslutas alltid med semikolon (;) antingen i slutet av den sista satsen eller på en rad i slutet av SQL-uttrycket.

Följande Select-uttryck ber Access hämta information från kolumnerna E-mail Address och Company från tabellen Contacts, särskilt där det hittar "Seattle" i kolumnen Ort.

SQL-objektfliken med ett SELECT-uttryck

Ovanstående fråga har tre satser: SELECT, FROM och WHERE.

1. SELECT-satsen listar de kolumner som innehåller de data du vill använda och har en operator (SELECT) följt av två identifierare (E-mail Address and Company). Om en identifierare innehåller blanksteg eller specialtecken (till exempel "E-mail Address") omsluter du identifieraren med hakparenteser.

2. FROM-satsen identifierar källtabellen. I det här exemplet har den en operator (FROM) följt av en identifierare (Contacts).

3. WHERE-satsen är en valfri sats. Exemplet har en operator (WHERE) följt av ett uttryck (City="Seattle").

Mer information om urvalsfrågor finns i skapa en enkel urvalsfråga.

Här är en lista över vanliga SQL-satser:

SQL-sats

Funktion

Obligatoriskt?

SELECT

Visar de fält som innehåller de data som du är intresserad av.

Ja

FROM

Visar de tabeller som innehåller de fält som anges i SELECT-satsen.

Ja

WHERE

Anger vilka fältvillkor som måste uppfyllas av en post för att posten ska tas med i resultatet.

Nej

ORDER BY

Anger hur resultatet ska sorteras.

Nej

GROUP BY

Visar fält som inte sammanfattas i SELECT-satsen i SQL-uttryck som innehåller mängdfunktioner.

Endast om den typen av fält förekommer

HAVING

Anger vilka villkor som gäller för fält som sammanfattas i SELECT-satsen i SQL-uttryck som innehåller mängdfunktioner.

Nej

Varje SQL-sats består av termer. Här är en lista över några vanliga SQL-termer.

SQL-term

Definition

Exempel

identifierare

Ett namn som du använder för att identifiera ett databasobjekt, till exempel kolumnnamnet.

[E-mail Address] och Company

operator

Ett nyckelord som representerar eller modifierar en åtgärd.

AS

konstant

Ett värde som inte ändras, till exempel ett tal eller NULL.

42

uttryck

En kombination av identifierare, operatorer, konstanter och funktioner som returnerar ett enda värde.

>= Produkter.[Enhetspris]

Överst på sidan

Anpassa SELECT-satsen

Anpassa

Exempel

Om du bara vill visa distinkta värden.

Använd nyckelordet DISTINCT i SELECT-satsen.

Om dina kunder till exempel kommer från flera olika filialer och vissa har samma telefonnummer och du bara vill se ett telefonnummer en gång, skulle SELECT-satsen se ut så här:

SELECT DISTINCT [txtCustomerPhone] 

Ändra hur en identifierare visas i databladsvyn för att förbättra läsbarheten.

Använd AS-operatorn (ett nyckelord som representerar en åtgärd eller ändrar en åtgärd) med ett fältalias i SELECT-satsen. Ett fältalias är ett namn som du tilldelar till ett fält så att resultatet blir lättare att läsa.

SELECT [txtCustPhone] AS [Customer Phone]

Anpassa FROM-satsen

Anpassa

Exempel

Du kan använda ett tabellalias eller ett annat namn som du tilldelar en tabell i ett Select-uttryck. Ett tabellalias är användbart om namnet på tabellnamnet är långt, särskilt när du har flera fält som har samma namn från olika tabeller.

För att välja data från två fält, båda namngivna ID, där ett kommer från tabellen tblCustomer och det andra från tabellen tblOrder:

SELECT [tblCustomer].[ID], 
[tblOrder].[ID]

Använd AS-operatorn för att definiera tabellalias i FROM-satsen:

FROM [tblCustomer] AS [C], 
[tblOrder] AS [O]

Sedan kan du använda de här tabellaliasen i SELECT-satsen på följande sätt:

SELECT [C].[ID], 
[O].[ID]

Använd kopplingar för att kombinera par med poster från två datakällor till ett enda resultat eller för att ange om du vill ta med poster från någon av tabellerna om det inte finns någon motsvarande post i den relaterade tabellen.

Koppla tabellerna så att frågan kombinerar objekt från tabellerna och exkluderar objekt när det inte finns någon motsvarande post i den andra tabellen

Så här kan FROM-satsen se ut:

FROM [tblCustomer] 
INNER JOIN [tblOrder]
ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]

Om att använda kopplingar

Det finns två typer av kopplingar, inre och yttre kopplingar. Inre kopplingar är vanligare i frågor. När du kör en fråga med en inre koppling visas bara de objekt där det finns ett gemensamt värde i båda de sammanfogade tabellerna.

Yttre kopplingar anger om data ska inkluderas när det inte finns något gemensamt värde. Yttre kopplingar är riktade, vilket innebär att du kan ange om du vill ta med alla poster från den första tabellen som anges i join (kallas för en vänsterkoppling), eller om du vill ta med alla poster från den andra tabellen i join (kallas för en högerkoppling). En yttre koppling har följande SQL-syntax:

FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2

Mer information om hur du använder kopplingar i en fråga finns i Koppla tabeller och frågor.

Överst på sidan

Anpassa WHERE-satsen

WHERE-satsen innehåller villkor som hjälper till att begränsa antalet objekt som returneras i en fråga. Se exempel på frågevillkor och hur de fungerar.

Ett exempel på hur du kan anpassa den grundläggande WHERE-satsen är att begränsa resultatet av en fråga. Anta att du vill hitta telefonnumret till en kund och bara kommer ihåg hans efternamn som Bagel. I det här exemplet lagras efternamnen i ett efternamn-fält, så SQL-syntaxen blir:

WHERE [LastName]='Bagel'

Använd WHERE-satsen för att kombinera datakällor för kolumner som innehåller överensstämmande data, men olika datatyper. Det här är praktiskt eftersom du inte kan skapa en koppling mellan fält som har olika datatyper. Använd ett fält som ett villkor för det andra fältet, med nyckelordet LIKE. Om du till exempel vill använda data från tabellen Tillgångar och tabellen Anställda, men bara om typen av tillgång i fältet tillgångstyp i tabellen Tillgångar har siffran 3 i fältet Antal i tabellen Anställda, kommer WHERE-satsen att se ut så här:

WHERE field1 LIKE field2

Viktigt!:  Du kan inte ange villkor för ett fält som används med en mängdfunktion i en WHERE-sats. I stället kan du använda en HAVING-sats för att ange villkor för aggregeringsfält.

Överst på sidan

Anpassa med operatorn UNION

Använd operatorn UNION när du vill se en kombinerad vy av resultat från flera liknande urvalsfrågor. Om databasen till exempel har en Products-tabell och en Services-tabell och båda har tre fält: exklusivt erbjudande eller produkt eller tjänst, pris, garanti eller garanti. Även om garantiinformationen i tabellerna Products och Services heter olika saker så är den grundläggande informationen densamma. Du kan använda en unionsfråga för att kombinera de tre fälten från de två tabellerna så här:

SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer
FROM Services;

När du kör frågan kombineras data från varje uppsättning av motsvarande fält i ett utdatafält. Om du vill ta med eventuella dubblettrader i resultatet använder du operatorn ALL.

Obs!:  Select-instruktionen måste ha samma antal utdatafält, i samma ordning och med samma eller kompatibla datatyper. När det gäller unionsfrågor är antal och textdatatyper kompatibla.

Mer information om unionsfrågor finns i använda en unionsfråga för att visa ett enhetligt resultat från flera frågor.

Överst på sidan

Behöver du mer hjälp?

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Gå med i Microsoft Office Insiders

Hade du nytta av den här informationen?

Hur nöjd är du med språkkvaliteten?
Vad påverkade din upplevelse?

Tack för din feedback!

×