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 ska titta på några typer av SQL-uttryck och de satser eller delar som du kan redigera för att få de resultat du vill ha.
Artikelinnehåll
- Skapa ett Select-uttryck
- Anpassa SELECT-satsen
- Anpassa FROM-satsen
- Anpassa WHERE-satsen
- Anpassa med operatorn UNION
Skapa ett Select-uttryck
Ett SQL select-uttryck har två till tre satser. SELECT-satsen talar om för databasen var den ska leta efter data och ber den att returnera ett visst resultat.
Obs
SELECT-uttryck avslutas alltid med ett semikolon (;) antingen i slutet av den sista satsen eller på en egen rad i slutet av SQL-uttrycket.
Följande select-uttryck ber Access att hämta information från kolumnerna E-postadress och Företag, från tabellen Kontakter, och specifikt där "Malmö" finns i kolumnen Ort.
Frågan ovan har tre satser: SELECT, FROM och WHERE.
1. veckor 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 och Company). Om en identifierare innehåller blanksteg eller specialtecken (till exempel "E-mail Address") omger du identifieraren med hakparenteser.
2. veckor FROM-satsen identifierar källtabellen. I det här exemplet har den en operator (FROM) följt av en identifierare (Contacts).
3. veckor 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 följer en lista över vanliga SQL-satser:
| SQL-sats | Vad den gör | 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 följer en lista över några vanliga SQL-termer.
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 filialkontor 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 operatorn AS (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. |
SELECT [txtCustPhone] AS [kundtelefon] |
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 om du har flera fält som har samma namn i olika tabeller. | Så här väljer du data från två fält som båda heter ID, varav det ena kommer från tabellen tblCustomer och det andra kommer från tabellen tblOrder: SELECT [tblCustomer]. [ID], [tblOrder]. [ID] Använd operatorn AS för att definiera tabellalias i FROM-satsen: FROM [tblCustomer] AS [C], [tblOrder] SOM [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 poster från endera tabellen ska tas med om det inte finns någon motsvarande post i den relaterade tabellen. Koppla tabellerna så att frågan kombinerar objekten från tabellerna och utesluter 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]. [Kund-ID] |
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, visar resultatet endast de objekt där det finns ett gemensamt värde i båda de kopplade tabellerna.
Yttre kopplingar anger om data ska tas med 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 kopplingen (kallas för en vänsterkoppling), eller om du vill ta med alla poster från den andra tabellen i kopplingen (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.
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 kan komma ihåg hans efternamn som Svensson. I det här exemplet lagras efternamnen i ett Efternamn-fält, så SQL-syntaxen skulle vara:
WHERE [LastName]='Bagel'
Använd även WHERE-satsen för att kombinera datakällor för kolumner som har matchande data, men olika datatyper. Det är praktiskt eftersom det inte går att skapa en koppling mellan fält som har olika datatyper. Använd ett fält som villkor för det andra fältet med nyckelordet LIKE . Om du till exempel bara vill använda data från en tillgångstabell och tabellen Anställda, men bara när tillgångstypen i fältet tillgångstyp i tabellen Tillgångar har siffran 3 i fältet Antal i tabellen Anställda, skulle WHERE-satsen 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.
Anpassa med operatorn UNION
Använd operatorn UNION när du vill visa en kombinerad vy av resultaten från flera liknande urvalsfrågor. Exempel: om databasen innehåller en Produkter-tabell och en Tjänster-tabell och de båda har tre fält: exklusivt erbjudande, produkt eller tjänst, pris, garanti eller garanti. Även om fältet med garantiinformation 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 korresponderande fält i ett utdatafält. Om du vill ta med 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 avsnittet om hur du använder en unionsfråga för att visa ett enat resultat från flera frågor.