Om dina frÄgor inte fungerar tillrÀckligt hÄrt kan du fokusera resultaten genom att lÀgga till nÄgra grundlÀggande SQL-satser. LÄt oss 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.
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 söka efter data och ber den att returnera ett specifikt resultat.
Obs!: SELECT-uttryck slutar alltid med semikolon (;) antingen i slutet av den sista satsen eller pÄ en rad i slutet av SQL-uttrycket.
Följande select-instruktion ber Access att hÀmta information frÄn kolumnerna E-postadress och Företag, frÄn tabellen Kontakter, sÀrskilt dÀr "Seattle" hittas i kolumnen Ort.
OvanstÄende frÄga har tre satserNA SELECT, FROM och WHERE.
1. SELECT-satsen listar kolumnerna som innehÄller de data som 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 (t.ex. "E-postadress" omger du identifieraren inom hakparenteser.
2. FROM-satsen identifierar kÀlltabellen. I det hÀr exemplet har den en operator (FROM) följt av en identifierare (Kontakter).
3. WHERE-satsen Àr en valfri sats. I exemplet finns 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 |
KrÀvs ? |
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-postadress] och företag |
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] |
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:
|
SÄ hÀr Àndrar du 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 ett fÀlt för att göra resultatet lÀttare att lÀsa. |
|
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. |
Om du vill vÀlja data frÄn tvÄ fÀlt, bÄde med namnet ID, varav ett kommer frÄn tabellen tblCustomer och det andra frÄn tabellen tblOrder:
AnvÀnd AS-operatorn för att definiera tabellalias i FROM-satsen:
Sedan kan du anvÀnda följande tabellalias i SELECT-satsen:
|
AnvÀnd kopplingar för att kombinera par med poster frÄn tvÄ datakÀllor till ett resultat eller för att ange om poster frÄn nÄgon av tabellerna 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 exkluderar objekt nÀr det inte finns nÄgon motsvarande post i den andra tabellen |
SÄ hÀr kan FROM-satsen se ut:
|
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 kopplade tabellerna.
Yttre kopplingar anger om data ska inkluderas dÀ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 begrÀnsar 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 Bagel. I det hÀr exemplet lagras efternamnen i ett LastName-fÀlt, sÄ SQL-syntaxen skulle vara:
WHERE [LastName]='Bagel'
AnvÀnd WHERE-satsen för att kombinera datakÀllor för kolumner som har matchande 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, bara nÀr typen av tillgÄng i fÀltet TillgÄngstyp i tabellen TillgÄngar har talet 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 se en kombinerad vy av resultat frĂ„n flera liknande urvalsfrĂ„gor. Om databasen till exempel har en produkttabell och en tjĂ€nsttabell och bĂ„da har tre fĂ€lt: exklusivt erbjudande eller produkt eller tjĂ€nst, pris, garanti eller garanti. Ăven om garantiinformation lagras i tabellen Produkter och garantiinformation lagras i tabellen TjĂ€nster, Ă€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 motsvarande fÀlt till 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 AnvÀnda en unionsfrÄga för att visa ett enhetligt resultat frÄn flera frÄgor.