Bruge en foreningsforespørgsel til at samle flere forespørgsler i ét resultat

Bruge en foreningsforespørgsel til at samle flere forespørgsler i ét resultat

Vigtigt: Denne artikel er maskinoversat. Se ansvarsfraskrivelsen. Du kan finde den engelske version af denne artikel her til din orientering.

Antag, at Access-databasen har to ikke-relaterede tabeller – en, der gemmer kundedata og en anden, der lagrer data om leverandører – og begge tabeller har en kontaktoplysninger felt. Du gerne vil se kontaktoplysninger fra begge tabeller i én visning. For at gøre dette, først oprette en udvælgelsesforespørgsel for hver tabel til at hente de oplysninger, og derefter kombinere disse resultater ved at oprette en foreningsforespørgsel.

Bemærk: Indholdet i denne artikel er beregnet til brug med Access-skrivebordsdatabaser. Du kan ikke oprette eller bruge en foreningsforespørgsel i Access webdatabaser eller Access-webapps.

Har brug for en opdatering til oprettelse af grundlæggende udvælgelsesforespørgsler? Se oprette en enkel udvælgelsesforespørgsel.

Først og nogle ting at vide om at oprette en foreningsforespørgsel:

  • Udvælgelsesforespørgsler du kombinere i en foreningsforespørgsel skal have det samme antal outputfelter, i samme rækkefølge og med den samme eller kompatible datatyper. Når du kører en foreningsforespørgsel, kombineres data fra hver række tilsvarende felter i ét outputfelt, så forespørgslens output har det samme antal felter findes som hver af de SELECT-sætninger.

  • En foreningsforespørgsel er SQL-specifik, og derfor skal skrives direkte i SQL. Du skifter til SQL-visning til at skrive SQL-specifik forespørgsler, herunder foreningsforespørgsler.

Trin 1: Opret udvælgelsesforespørgslerne

Bemærk: Du kan medtage flere tabeller eller forespørgsler i en forespørgsel, men i denne fremgangsmåde antages det, at de enkelte udvælgelsesforespørgsler kun indeholder data fra én tabel.

  1. Klik på Forespørgselsdesign i gruppen Forespørgsler under fanen Opret.

  2. Dobbeltklik på den tabel, der indeholder de felter, du vil medtage, i dialogboksen Vis tabel.

  3. Luk dialogboksen Vis tabel.

  4. Dobbeltklik på de enkelte felter, du vil medtage, i forespørgslens designvindue.
    Når du vælger felter, skal du sikre dig, at du tilføjer det samme antal felter i samme rækkefølge, som du føjer til de andre udvælgelsesforespørgsler. Vær især opmærksom på datatyperne i felterne, og kontrollér, at datatyperne er kompatible med felter på samme placering i de andre forespørgsler, du samler. Hvis den første udvælgelsesforespørgsel f.eks. indeholder fem felter, og det første felt indeholder data af typen dato og klokkeslæt, skal du sikre dig, at hver af de andre udvælgelsesforespørgsler, du samler, også indeholder fem felter, hvor det første felt indeholder data af typen dato og klokkeslæt osv.

  5. Du kan også føje kriterier til dine felter ved at skrive de relevante udtryk i rækken kriterier for feltgitteret.

  6. Når du er færdig med at tilføje felter og feltkriterier, skal du køre udvælgelsesforespørgslen og gennemse dens output. Klik på Kør i gruppen resultater under fanen Design.

  7. Skift til forespørgslens designvisning.

  8. Gem udvælgelsesforespørgslen, og lad den være åben.

  9. Gentag denne fremgangsmåde for hver af de udvælgelsesforespørgsler, du vil samle.

Du kan finde flere oplysninger om brug af kriterier i en forespørgsel, Anvend kriterier til en forespørgsel.

Trin 2: Kombiner udvælgelsesforespørgslerne

I dette trin skal oprette du foreningsforespørgslen ved hjælp af SQL-sætninger. (Du kan finde flere oplysninger, se afsnittet SQL-syntaks under).

  1. Klik på Forespørgselsdesign i gruppen Forespørgsler under fanen Opret.

  2. Luk dialogboksen Vis tabel.

  3. Klik på Forening i gruppen Forespørgsel under fanen Design.

Access skjuler forespørgselsdesignvinduet og viser fanen SQL Vis objekt. På dette tidspunkt er SQL-visning objektfane tom.

  1. Klik på fanen for den første udvælgelsesforespørgsel, du vil samle i foreningsforespørgslen.

  2. Under fanen Startside, klik på Vis > SQL-visning.

  3. Kopiere SQL-sætningen for udvælgelsesforespørgslen. Klik på fanen for foreningsforespørgslen, du har startet til at oprette i trin 1.

  4. Indsæt SQL-sætningen for udvælgelsesforespørgslen under fanen SQL-visning for objektet for foreningsforespørgslen.

  5. Slet semikolonet(;) i slutningen af SQL-sætningen i udvælgelsesforespørgslen.

  6. Tryk på Enter for at flytte markøren en linje ned, og skriv derefter UNION på den nye linje.

  7. Klik på fanen for den næste udvælgelsesforespørgsel, du vil samle i foreningsforespørgslen.

  8. Gentag trin 5-10, indtil du har kopieret og indsat alle SQL-sætningerne for udvælgelsesforespørgslerne i foreningsforespørgslens SQL-visningsvindue. Undlad at slette semikolonet eller skrive noget efter SQL-sætningen for den sidste udvælgelsesforespørgsel.

  9. Klik på Kør i gruppen Resultater under fanen Design.

Resultatet af unionsforespørgslen vises i dataarkvisning.

Toppen af siden

Tip til brug af foreningsforespørgsler

  • Hvis du vil kunne se, hvilke rækker der stammer fra hvilke tabeller, skal du tilføje en tekststreng som et felt i de enkelte SELECT-sætninger.

    For eksempel, hvis en select-sætning henter felter fra en tabel med navnet produkter, og en anden select-sætning henter felter fra en tabel med navnet Services, tilføje strengen "Produkt" som et felt i slutningen af den første sætning og "Tjenesten" i slutningen af den anden sætning. Du kan også tildele et felt alias (for eksempel, "type") til strengene ved hjælp af nøgleordet AS, som vist i følgende eksempel:

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

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

    I forespørgslens output medtages et felt, der kaldes "type", som viser, om rækken er hentet fra tabellen Products eller tabellen Services.

  • De enkelte UNION-nøgleord samler de SELECT-sætninger, der står umiddelbart før og efter ordet. Hvis du bruger nøgleordet ALL sammen med nogle af UNION-nøgleordene i forespørgslen, men ikke sammen med andre, omfatter resultaterne dubletrækker fra de par af SELECT-sætninger, der samles ved hjælp af UNION ALL, men de omfatter ikke dubletrækker fra SELECT-sætninger, der samles ved hjælp af UNION uden nøgleordet ALL.

  • Antal felter, datatyper og rækkefølgen af felterne i udvælgelsesforespørgslerne skal stemme overens. Du kan bruge udtryk, f.eks. beregninger eller underforespørgsler for at få dem til at stemme overens.

    Du kan f.eks. få et felt med et årstal på to tegn til at stemme overens med et felt med et årstal på fire tegn ved at bruge funktionen Højre til at trække de to sidste cifre ud af årstallet på fire tegn.

Oprette en ny tabel ud fra resultaterne fra en foreningsforespørgsel

Først skal bruge foreningsforespørgslen som input til en ny udvælgelsesforespørgsel, og brug derefter udvælgelsesforespørgslen som udgangspunkt for en tabeloprettelsesforespørgsel, som vist i følgende trin:

  1. Opret og gem foreningsforespørgslen.

  2. Klik på Forespørgselsdesign i gruppen Forespørgsler under fanen Opret.

  3. Klik på fanen Forespørgsler i dialogboksen Vis tabel.

  4. Dobbeltklik på foreningsforespørgslen, og luk derefter dialogboksen Vis tabel.

    Bemærk: Hvis du får vist en advarsel på meddelelseslinjen, kan være deaktiveret handlingsforespørgsler. Hvis du vil aktivere handlingsforespørgsler, klik på Aktivér indhold på meddelelseslinjen.

  5. Dobbeltklik på stjernen (*) for at bruge alle foreningsforespørgslens felter til at oprette en ny tabel i forespørgselsdesigngitteret, under foreningsforespørgslens objektfane.

  6. Klik på Tabeloprettelse i gruppen Forespørgselstype under fanen Design.

  7. Skriv et navn til den nye tabel i dialogboksen Tabeloprettelse.

  8. Du kan også angive en anden database, hvor du kan oprette en tabel.

  9. Klik på OK.

  10. Klik på Kør i gruppen Resultater under fanen Design.

Brug af en foreningsforespørgsel til at udføre en fuldstændig ydre joinforbindelse

Du kan bruge en foreningsforespørgsel til at oprette en fuldstændig ydre joinforbindelse. En fuldstændig ydre joinforbindelse begrænser ikke de rækker, der returneres fra nogen af den sammenkædede tabeller, men den samler rækker ud fra værdier i det joinforbundne felt.

  1. Opret en forespørgsel, der har en venstre ydre joinforbindelse til det felt, du vil bruge til en fuldstændig ydre joinforbindelse.

  2. Klik på Vis i gruppen Visninger under fanen Startside, og klik derefter på SQL-visning.

  3. Tryk på Ctrl + C for at kopiere SQL-koden.

  4. Slet semikolon i slutningen af FROM-delsætningen, og tryk derefter på Enter.

  5. Skriv UNION, og tryk derefter på Enter.

    Bemærk: Du skal ikke bruge nøgleordet ALL, når du bruger en foreningsforespørgsel til at oprette en fuldstændig ydre joinforbindelse.

  6. Tryk på Ctrl + V for at indsætte SQL-koden, som du kopierede i trin 3.

  7. I den kode, du har indsat, skal du ændre LEFT JOIN til RIGHT JOIN.

  8. Slet semikolon i slutningen af andet FROM-delsætning, og tryk derefter på Enter.

  9. Tilføj en WHERE-delsætning, der angiver, at værdien i det joinforbundne felt er NULL i den første tabel, som er angivet i FROM-delsætningen (venstre tabel).

    Hvis f.eks. FROM-delsætningen er:

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

    Du skal tilføje følgende WHERE-delsætning:

    WHERE Products.ID IS NULL

  10. Skriv et semikolon (;) i slutningen af WHERE-delsætningen for at angive slutningen af foreningsforespørgslen.

  11. Klik på Kør i gruppen Resultater under fanen Design.
    Resultaterne af foreningsforespørgslen vises i dataarkvisning.

Du kan finde flere oplysninger, se joinforbinde tabeller og forespørgsler.

Toppen af siden

Krav og SQL-syntaks for en foreningsforespørgsel

Nogle krav til en foreningsforespørgsel

  • De udvælgelsesforespørgsler, du kombinere i en foreningsforespørgsel skal have det samme antal outputfelter, i samme rækkefølge og med den samme eller kompatible datatyper. Når du kører en foreningsforespørgsel, kombineres data fra hver række tilsvarende felter i ét outputfelt, så forespørgslens output har det samme antal felter findes som hver af de SELECT-sætninger.

    Bemærk: I forbindelse med en foreningsforespørgsel er datatyperne Tal og Tekst kompatible.

  • En foreningsforespørgsel er SQL-specifik, og derfor skal skrives direkte i SQL. Du skifter til SQL-visning til at skrive SQL-specifik forespørgsler, herunder foreningsforespørgsler.

SQL-syntaks for en foreningsforespørgsel

I en foreningsforespørgsel har alle udvælgelsesforespørgsler (også kaldet en SELECT-sætning) følgende delsætninger:

Delsætning

Indeholder en liste over...

VÆLG

felter, der indeholder de data, du vil hente.

FRA

tabeller, der indeholder disse felter.

Valgfri WHERE

kriterier for disse felter.

SELECT-sætningerne kombineres ved hjælp af nøgleordet UNION.

Den grundlæggende SQL-syntaks til en foreningsforespørgsel er som følger:

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

Du har f.eks. en database, der indeholder en tabel med navnet Products og en anden tabel med navnet Services, og begge tabeller indeholder felter, som indeholder navnet på produktet eller tjenesten, prisen, garanti og dækning, og om du tilbyder produktet eller tjenesten eksklusivt. Selvom der gemmes garantioplysninger i tabellen Products, og der gemmes dækningsoplysninger i tabellen Services, er de grundlæggende oplysninger de samme (at et bestemt produkt eller en bestemt tjeneste leveres med løftet om kvalitet). Du kan bruge en foreningsforespørgsel, f.eks. som den følgende, til at samle de fire felter fra de to tabeller:

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

Lad os undersøge det foregående eksempel på syntaks, linje for linje:

Syntaks

Forklaring

Flere oplysninger

SELECT name, price, warranty_available, exclusive_offer

Første SELECT-delsætning

SELECT efterfølges af en liste id'er, som angiver de felter, du vil hente data.

En SELECT-delsætning skal indeholder mindst ét felt.

Denne SELECT-delsætning indeholder id'erne name, prisen, warranty_availableog exclusive_offer.

FROM Products

Første FROM-delsætning

En FROM-delsætning efter en SELECT-delsætning, og sammen udgør de en grundlæggende SELECT-sætning.

FROM efterfølges af en liste id'er, som angiver, hvilke tabeller der indeholder de felter, der er angivet i SELECT-delsætningen.

En FROM-delsætning skal angive mindst én tabel.

Denne FROM-delsætning indeholder tabelidentifikatoren Products.

UNION ALL

Nøgleordet UNION og det valgfri nøgleord ALL

Resultaterne af den SELECT-sætning, der står foran UNION, kombineres med resultatet af den SELECT-sætning, der følger efter UNION.

Når du bruger nøgleordet ALL, fjernes dublerede rækker ikke fra resultatet af foreningsforespørgslen.

Ved hjælp af nøgleordet ALL, kan forespørgslen køre hurtigere, fordi Access ikke skal kontrollere, om dubletrækker.

Brug nøgleordet ALL, hvis et af følgende betingelser er opfyldt:

  • Du er sikker på, at udvælgelsesforespørgslerne ikke medfører dubletrækker.

  • Det noget ikke for dig, om resultaterne indeholder dubletrækker.

  • Du vil se dubletrækker.

SELECT name, price, guarantee_available, exclusive_offer

Den anden SELECT-delsætning

Nogle regler:

  • Den anden SELECT-delsætning skal have det samme antal felter som første SELECT-delsætningen.

  • Felter, der deler fælles data skal vises i den samme rækkefølge i delsætningen.

  • Felter, der deler fælles data skal have den samme eller kompatible datatyper.

Bemærk: Navnene på felterne i outputtet for en foreningsforespørgsel er fra den første SELECT-delsætning. Data fra feltet "warranty_available" og fra feltet "guarantee_available" er tilfældet, i vores eksempel navngivet "warranty_available" i forespørgslens output.

FROM Services

Anden FROM-delsætning

Der er ingen begrænsninger på tabeller i FROM-delsætning af en foreningsforespørgsel. Du kan oprette en foreningsforespørgsel, der bruger de samme tabeller i hver FROM-delsætning. Du kan have forskellige antal tabeller i FROM-delsætning. I vores eksempel har FROM-delsætning hver kun én tabel.

Toppen af siden

Bemærk: Ansvarsfraskrivelse for maskinoversættelse: Denne artikel er blevet oversat af et computersystem uden menneskelig indgriben. Microsoft tilbyder disse maskinoversættelse for at hjælpe ikke-engelsktalende brugere til at kunne nyde indhold om Microsofts produkter, tjenester og teknologier. Da artiklen er maskinoversat, kan den indeholde forkerte ord eller syntaks- eller grammatikfejl.

Udvid dine færdigheder
Gå på opdagelse i kurser
Få nye funktioner først
Bliv Office Insider

Var disse oplysninger nyttige?

Tak for din feedback!

Tak for din feedback! Det lyder, som om det vil kunne hjælpe, hvis du bliver sat i forbindelse med en af vores Office-supportteknikere.

×