Använd en unionsfråga för att kombinera flera frågor till ett resultat

Använd en unionsfråga för att kombinera flera frågor till ett resultat

Viktigt!: Den här artikeln är maskinöversatt, se ansvarsfriskrivningen. Den engelska versionen av den här artikeln finns här för din referens.

Anta att Access-databasen har två orelaterade tabeller – sådana som lagrar kunddata och en annan som lagrar data om leverantörer – och båda tabellerna innehåller kontaktinformation fält. Du vill se kontaktinformationen från båda tabellerna i en vy. Genom att först skapa en urvalsfråga för varje tabell att hämta kontaktinformationen och sedan kombinera dessa resultat genom att skapa en unionsfråga.

Obs!: Innehållet i den här artikeln är avsedd att användas med Access-skrivbordsdatabaser. Du kan inte skapa eller använda en unionsfråga i Access webbdatabaser eller Access-webbprogram.

Behöver Repetera om hur du skapar grundläggande urvalsfrågor? Finns i Skapa en enkel urvalsfråga.

Första, ett par saker du bör veta om hur du skapar en union-fråga:

  • Select-frågor i en unionsfråga kombinera måste ha samma antal resultatfält, i samma ordning och med samma eller kompatibla datatyper. När du kör en unionsfråga kombineras data från varje uppsättning motsvarande fält till ett fält för utdata så att frågeresultatet har samma antal fält som var och en av SELECT-uttryck.

  • En unionsfråga är SQL-specifik och därför måste skrivas direkt i SQL. Växla till SQL-vy att skriva SQL-specifika frågor, inklusive unionsfrågor.

Steg 1: Skapa först urvalsfrågor i designvyn och kombinera dem sedan

Obs!: Även om du kan inkludera flera tabeller eller frågor i en urvalsfråga förutsätter den här metoden att var och en av dina urvalsfrågor innehåller data från endast en tabell.

  1. Klicka på Frågedesign i gruppen Frågor på fliken Skapa.

  2. Dubbelklicka på tabellen som innehåller fälten som du vill inkludera i dialogrutan Visa tabell. Tabellen läggs till i frågedesignfönstret.

  3. Stäng dialogrutan Visa tabell.

  4. Dubbelklicka på varje fält som du vill ta med i frågedesignfönstret.
    När du markerar fälten ska du se till att lägga till samma antal fält, i samma ordning, som du lägger till andra urvalsfrågor. Var uppmärksam på fältens datatyper och kontrollera att de har datatyper som är kompatibla med fält i samma position i de övriga frågorna du kombinerar. Om den första markerade frågan exempelvis har fem fält där den första innehåller datum-/tidsdata, ska du säkerställa att var och en av de övriga frågorna du kombinerar också har fem fält, där den första innehåller datum-/tidsdata osv.

  5. Om du vill lägga till villkor till fälten skriver lämpliga uttryck i raden villkor i rutnätet.

  6. När du är klar med att lägga till fält och fältvillkor ska du köra urvalsfrågan och granska dess utdata. Klicka på Kör på fliken Design i gruppen resultat.

  7. Växla frågan till designvyn.

  8. Spara Select-frågan och lämna den öppen.

  9. Upprepa den här proceduren för var och en av de Select-frågor du vill kombinera.

Mer information om hur du använder villkor i en fråga finns i använda villkor i en fråga.

Steg 2: Kombinera urvalsfrågor

I det här steget skapar du unionsfrågan med hjälp av SQL-uttryck. (Mer information finns i avsnittet SQL-syntax nedan.)

  1. Klicka på Frågedesign i gruppen Frågor på fliken Skapa.

  2. Stäng dialogrutan Visa tabell.

  3. Klicka på Union i gruppen Fråga på fliken Design.

Access döljer frågedesignfönstret och visar fliken SQL visa objekt. Fliken SQL visa objektet är nu tom.

  1. Klicka på fliken för den första Select-frågan du vill kombinera i unionsfrågan.

  2. På fliken Start klickar du på Visa > SQL-vy.

  3. Kopiera SQL-uttrycket för select-frågan. Klicka på fliken för unionsfrågan som du startat du skapar i steg 1.

  4. Klistra in SQL-uttrycket för Select-frågan på unionsfrågans objektflik för SQL-vyn.

  5. Ta bort semikolonet (;) som ligger i slutet av Select-frågans SQL-uttryck.

  6. Tryck på RETUR för att flytta markören nedåt en rad och skriv sedan UNION på den nya raden.

  7. Klicka på fliken för nästa Select-fråga som du vill kombinera i unionsfrågan.

  8. Upprepa steg 5 till 10 för den här proceduren tills du har kopierat och klistrat in alla SQL-uttryck för Select-frågor i SQL-vyn för unionsfrågan. Ta inte bort semikolon eller skriv något efter SQL-uttrycket för den senaste Select-frågan.

  9. Klicka på Kör i gruppen Resultat på fliken Design.

Resultaten av unionsfrågan visas i Databladsvy.

Överst på sidan

Tips om användning av unionsfrågor

  • Om du vill kunna se vilka rader som kommer från vilken tabell kan du lägga till en textsträng som ett fält i vart och ett av dina urvalsuttryck..

    Till exempel om ett select-uttryck hämtar fält från en tabell med namnet produkter och ett annat select-uttryck hämtar fält från en tabell med namnet Services, lägga till strängen ”produkt” som ett fält i slutet av den första satsen och ”tjänsten” i slutet av den andra uttryck. Du kan också tilldela ett fält alias (till exempel ”typ”) till strängarna genom att använda nyckelordet AS enligt följande exempel:

    SELECT field1, field2, ... "Product" AS type

    SELECT field1, field2, ... "Service" AS type

    I frågeutdata finns ett fält med namnet "typ" som visar om raden kommer från tabellen Produkter eller tabellen Tjänst.

  • Varje UNION-nyckelord kombinerar de SELECT-uttryck som omedelbart föregår och efterföljer det. Om du använder ALL-nyckelordet med vissa av UNION-nyckelorden i frågan, men inte med andra, kommer dubblettrader från de SELECT-uttryckspar som är kombinerade genom användning av UNION ALL att tas med i resultaten, men inte dubblettrader från SELECT-uttrycken som kombineras genom användning av UNION utan ALL-nyckelordet.

  • Antal, datatyper och fältordning i urvalsfrågorna måste stämma överens. Du kan använda uttryck, t.ex. beräkningar och underfrågor, för att få dem att stämma överens.

    Du kan t.ex. matcha ett årsfält med två tecken med ett annat årsfält med fyra tecken genom att använda Högra funktionen för att extrahera de sista två siffrorna i året med fyra tecken.

Använda resultatet från en unionsfråga för att skapa en ny tabell

Använd först unionsfrågan som indata för en ny urvalsfråga och Använd sedan urvalsfrågan som grund för en tabellfråga enligt följande steg:

  1. Skapa och spara unionsfrågan.

  2. Klicka på Frågedesign i gruppen Frågor på fliken Skapa.

  3. Klicka på fliken Frågor i dialogrutan Visa tabell.

  4. Dubbelklicka på din unionsfråga och stäng sedan dialogrutan Visa tabell.

    Obs!: Om du ser en säkerhetsvarning i meddelandefältet kan vara inaktiverade redigeringsfrågor. Klicka på Aktivera innehåll i meddelandefältet om du vill aktivera redigeringsfrågor.

  5. Dubbelklicka på asterisken (*) om du vill skapa en ny tabell med hjälp av alla unionsfrågan fält i frågerutnätet din unionsfråga objekt på fliken.

  6. Klicka på Tabellfråga i gruppen Frågetyp på fliken Design.

  7. Ange ett namn för den nya tabellen i dialogrutan Tabellfråga.

  8. Om du vill ange en annan databas där du vill skapa tabellen.

  9. Klicka på OK.

  10. Klicka på Kör i gruppen Resultat på fliken Design.

Använda en unionsfråga för att utföra en full yttre koppling:

Du kan använda en unionsfråga för att utföra en full yttre koppling. En full yttre koppling begränsar inte antalet rader som returneras från någon av de kopplade tabellerna, men kombinerar rader på basis av värdena i det kopplade fältet.

  1. Skapa en fråga som har en vänsterbaserad yttre koppling på fältet du vill använda för en full yttre koppling.

  2. Klicka på Visa i gruppen Vyer på fliken Start och sedan på SQL-vy.

  3. Tryck på Ctrl + C för att kopiera SQL-koden.

  4. Ta bort semikolon i slutet av FROM-satsen och tryck sedan på RETUR.

  5. Skriv UNIONoch tryck sedan på RETUR.

    Obs!: Använd inte ALL-nyckelordet när du använder en unionsfråga för att utföra en full yttre koppling.

  6. Tryck på Ctrl + V för att klistra in SQL-koden som du kopierade i steg 3.

  7. Ändra LEFT JOIN till RIGHT JOINi den kod du klistrade in.

  8. Ta bort semikolon i slutet av andra FROM-satsen och tryck sedan på RETUR.

  9. Lägg till en WHERE-sats som anger att värdet för det kopplade fältet är NULL i första tabellen som listas i FROM-satsen (vänster tabellen).

    Om FROM-satsen exempelvis är följande:

    FROM Products RIGHT JOIN [Order Details] 
    ON Products.ID = [Order Details].[Product ID]

    Du lägger till följande WHERE-sats:

    WHERE Products.ID IS NULL

  10. Skriv ett semikolon (;) i slutet av WHERE-satsen för att indikera slutet av unionsfrågan.

  11. Klicka på Kör i gruppen Resultat på fliken Design.
    Unionsfrågans resultat visas i Databladsvy.

Mer information finns i Koppla tabeller och frågor.

Överst på sidan

Krav och SQL-syntax för en unionsfråga

Några krav för unionsfrågor

  • Select-frågor som du kombinera i en unionsfråga måste ha samma antal resultatfält, i samma ordning och med samma eller kompatibla datatyper. När du kör en unionsfråga kombineras data från varje uppsättning motsvarande fält till ett fält för utdata så att frågeresultatet har samma antal fält som var och en av SELECT-uttryck.

    Obs!: När det gäller unionsfrågor är antal och textdatatyper kompatibla.

  • En unionsfråga är SQL-specifik och därför måste skrivas direkt i SQL. Växla till SQL-vy för att skriva SQL-specifika frågor, inklusive unionsfrågor.

SQL-syntax för en unionsfråga

I en unionsfråga har varje fråga (kallas även ett SELECT-uttryck) följande satser:

Sats

Innehåller en lista över...

SELECT

fält som innehåller de data som du vill hämta.

FROM

tabeller som innehåller dessa fält.

Tillvalet WHERE

villkor för dessa fält.

SELECT-uttryck kombineras med nyckelordet UNION.

Grundläggande SQL-syntax för en unionsfråga som är enligt följande:

SELECT field_1[, field_2,…]
FROM table_1[, table_2,…]
UNION [ALL]
SELECT field_a[, field_b,...]
FROM table_a[, table_b,…];

Exempel: Databasen innehåller en tabell som heter Produkter och en annan som heter Tjänster. Båda tabellerna har fält som innehåller namn på produkten eller tjänsten, pris, garanti och information om du exklusivt erbjuder produkten eller tjänsten. Fältet med garantiinformation i tabellen Produkter heter garanti, och garantiavtal i tabellen Tjänster, men den grundläggande informationen densamma (oavsett om en viss produkt eller tjänst levereras med en viss kvalitetsgaranti). Du kan använda en unionsfråga, t.ex. följande, för att kombinera de fyra fälten från de två tabellerna:

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services;

Nu ska vi granskar det föregående syntaxexemplet rad för rad:

Syntax

Förklaring

Ytterligare information

SELECT namn, pris, garanti, exklusivt_erbjudande

Första SELECT-satsen

SELECT följs av en lista med identifierare som anger du vilka fält som du vill hämta data.

En SELECT-sats måste innehålla minst ett fält.

Den här SELECT-satsen innehåller fältidentifierarna namn, pris, garantioch exklusivt_erbjudande.

FROM Produkter

Första FROM-satsen

En FROM-sats följer en SELECT-sats och tillsammans utgör de ett grundläggande SELECT-uttryck.

FROM följs av en lista med identifierare som indikerar vilka tabeller som innehåller de fält som anges i SELECT-satsen.

En FROM-sats måste alltid innehålla minst en tabell.

Den här FROM-satsen innehåller tabellidentifieraren Produkter.

UNION ALL

UNION-nyckelordet och det valfria ALL-nyckelordet

Resultatet av SELECT-uttrycket som föregår UNION kombineras med resultatet av SELECT-uttrycket som följer UNION.

När du använder nyckelordet ALL tas inte dubblerade rader bort från resultatet av unionsfrågan.

Genom att använda nyckelordet ALL kan frågan köra snabbare eftersom Access inte behöver söka efter dubblerade rader.

Använda all om något av följande villkor uppfylls:

  • Du är säker på att select-frågorna inte producerar dubblerade rader.

  • Det spelar ingen roll för dig om dina resultat har dubblerade rader.

  • Du vill se dubblerade rader.

SELECT namn, pris, garantiavtal, exklusivt_erbjudande

Andra SELECT-satsen

Några regler:

  • Andra SELECT-satsen måste innehålla samma antal fält som första SELECT-satsen.

  • Fält med gemensamma data måste anges i samma ordning i satsen.

  • Fält med gemensamma data måste ha samma eller kompatibla datatyper.

Obs!: Namnen på fält i en unionsfråga utdata kommer från första SELECT-satsen. I vårt exempel nu kallas data från fältet ”garanti” och från fältet ”garantiavtal” ”garanti” i frågeresultatet.

FROM Tjänster

Andra FROM-satsen

Det finns inga restriktioner för tabeller i FROM-satser för en unionsfråga. Du kan skapa en unionsfråga som använder samma tabellerna i varje FROM-satsen. Du kan ha olika antal tabeller i FROM-satser. I vårt exempel har FROM-satser varje endast en tabell.

Överst på sidan

Obs!: Ansvarsfriskrivning för maskinöversättning: Den här artikeln har översatts av ett datorsystem utan mänsklig inblandning. Microsoft erbjuder dessa maskinöversättningar för att hjälpa icke engelskspråkiga användare att ta del av information om Microsofts produkter, tjänster och tekniker. Eftersom artikeln är maskinöversatt kan den innehålla fel i ordval, syntax och grammatik.

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Office Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×