Bruke en unionsspørring til å kombinere flere søk i ett resultat

Bruke en unionsspørring til å kombinere flere søk i ett resultat

Viktig: Denne artikkelen er maskinoversatt, se ansvarsfraskrivelsen. Du finner den engelske versjonen av artikkelen her som referanse.

La oss si at Access-databasen har to ikke-relaterte tabeller – én som lagrer kundedata og en annen som lagrer data om leverandører – og begge tabellene har et kontaktinformasjon-felt. Du vil se kontaktinformasjonen fra begge tabeller i én visning. Du gjør dette ved først opprette en utvalgsspørring for hver tabell til å hente kontaktinformasjon, og deretter kombinere disse resultater ved å opprette en unionsspørring.

Merknad: Innholdet i denne artikkelen er beregnet for bruk med Access-skrivebordsdatabaser. Du kan ikke opprette eller bruke en unionsspørring i Access-databaser eller Access-nettapper.

Trenger du repetisjon av hvordan du lager grunnleggende utvalgsspørringer? Se opprette en enkel utvalgsspørring.

Første, et par ting du bør vite om hvordan du oppretter en unionsspørring:

  • Du må ha samme antall utdatafeltene, i samme rekkefølge og med samme eller kompatible datatyper utvalgsspørringer du kombinere i unionsspørringen. Når du kjører en unionsspørring, kombineres data fra hvert sett med tilsvarende felt i ett utdatafelt slik at resultatet av spørringen har samme antall felt som hver av SELECT-setningene.

  • En unionsspørring er SQL-spesifikk, og derfor må være skrevet direkte i SQL. Du bytter til SQL-visning til å skrive SQL-spørringer, inkludert unionsspørringer.

Trinn 1: Opprette utvalgsspørringene

Merknad: Selv om du kan ta med flere tabeller eller spørringer i en spørring, antar denne fremgangsmåten at hver av utvalgsspørringene bare inneholder data fra én tabell.

  1. Klikk Spørringsutforming i Spørringer-gruppen i kategorien Opprett.

  2. Dobbeltklikk tabellen som inneholder feltene du vil ta med, i dialogboksen Vis tabell. Tabellen legges til i utformingsvisningen for spørringen.

  3. Lukk dialogboksen Vis tabell.

  4. I utformingsvisningen for spørringen dobbeltklikker du hvert av feltene du vil ta med.
    Når du velger felt, må du påse at du legger til samme antall felt som du legger til i de andre utvalgsspørringene og at feltene står i samme rekkefølge. Følg svært nøye med på datatypene til feltene, og påse at de har datatyper som er kompatible med feltene i samme posisjon i de andre spørringene du kombinerer. Hvis den første utvalgsspørringen for eksempel har fem felt, der det første inneholder dato-/klokkeslettdata, må du påse at hver av de andre utvalgsspørringene som du kombinerer, også har fem felt, der det første inneholder dato-/klokkeslettdata, og så videre.

  5. Du kan også legge til vilkår i feltene ved å skrive inn de aktuelle uttrykkene i vilkår-raden i feltrutenettet.

  6. Når du er ferdig med å legge til felt og feltvilkår, bør du kjøre utvalgsspørringen og se gjennom utdataene. Klikk Kjør i resultater-gruppen i kategorien Utforming.

  7. Bytt til utformingsvisning for spørringen.

  8. Lagre utvalgsspørringen, og la den stå åpen.

  9. Gjenta denne prosessen for hver av utvalgsspørringene du vil kombinere.

Hvis du vil ha mer informasjon om hvordan du bruker vilkår i en spørring, kan du se Bruk vilkår i en spørring.

Trinn 2: Kombinere utvalgsspørringene

I dette trinnet oppretter du unionsspørringen ved hjelp av SQL-setninger. (Hvis du vil ha mer informasjon, kan du se delen SQL-syntaks nedenfor.)

  1. Klikk Spørringsutforming i Spørringer-gruppen i kategorien Opprett.

  2. Lukk dialogboksen Vis tabell.

  3. Klikk Union i gruppen Spørring i kategorien Utforming.

Access skjuler spørringsutformingsvinduet, og viser objektkategorien SQL-visning. På dette tidspunktet er objektkategorien SQL-visning tom.

  1. Klikk kategorien for den første utvalgsspørringen du vil kombinere i unionsspørringen.

  2. Kategorien Hjem, klikk visning > SQL-visning.

  3. Kopier SQL-setningen for utvalgsspørringen. Klikk fanen for unionsspørringen som du har startet til å opprette i trinn 1.

  4. Lim SQL-setningen for utvalgsspørringen inn i objektkategorien SQL-visning i unionsspørringen.

  5. Slett semikolonet (;) på slutten av SQL-setningen for utvalgsspørringen.

  6. Trykk Enter for å flytte markøren ned én linje, og skriv deretter UNION på den nye linjen.

  7. Klikk kategorien for den neste utvalgsspørringen som du vil kombinere i unionsspørringen.

  8. Gjenta trinn 5 til 10 til du har kopiert og limt inn alle SQL-setningene for utvalgsspørringene i SQL-visningsvinduet i unionsspørringen. Ikke slett semikolonet eller skriv noe etter SQL-setningen i den siste spørringen.

  9. Klikk Kjør i Resultater-gruppen i kategorien Utforming.

Resultatene av unionsspørringen vises i dataarkvisning.

Til toppen av siden

Tips for bruk av unionsspørringer

  • Hvis du ønsker å kunne se hvilke rader som kom fra hvilke tabeller, legger du til en tekststreng som et felt i hver av SELECT-setningene.

    Hvis du for eksempel hvis en select-setningen henter felt fra en tabell kalt produkter, og en annen select-setningen henter felt fra en tabell kalt tjenester, legge til strengen "Produkt" som et felt på slutten av den første setningen og "Service" på slutten av den andre setningen. Du kan også tilordne et felt alias (for eksempel "type") til strengene ved hjelp av AS-nøkkelordet, som vist i eksemplet nedenfor:

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

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

    Spørringsresultatene inneholder da et felt med navnet Type som viser om raden kom fra tabellen Products eller tabellen Services.

  • Hvert UNION-nøkkelord kombinerer SELECT-setningene som kommer rett før og etter. Hvis du bruker nøkkelordet ALL sammen med noen av UNION-nøkkelordene i spørringen, men ikke sammen med andre, inneholder resultatene duplikatrader fra parene med SELECT-setninger som kombineres ved hjelp av UNION ALL, men de inneholder ikke duplikatrader fra SELECT-setninger som kombineres ved hjelp av UNION uten nøkkelordet ALL.

  • Antall, datatyper og rekkefølge for feltene i utvalgsspørringene, må samsvare. Du kan du bruke uttrykk, for eksempel beregninger eller delspørringer, til å få dem til å samsvare.

    Du kan for eksempel sammenligne et årsfelt med to sifre mot et årsfelt med fire sifre ved å bruke funksjonen Høyre til å trekke ut de to siste sifrene i årstallet med fire sifre.

Bruke resultatet fra en unionsspørring til å opprette en ny tabell

Først bruker du unionsspørringen som inndata for en ny utvalgsspørring, og bruke denne utvalgsspørringen som grunnlag for en lag tabell-spørring, som vist i følgende trinn:

  1. Opprett og lagre unionsspørringen.

  2. Klikk Spørringsutforming i Spørringer-gruppen i kategorien Opprett.

  3. Klikk kategorien Spørringer i dialogboksen Vis tabell.

  4. Dobbeltklikk unionsspørringen, og lukk deretter dialogboksen Vis tabell.

    Merknad: Hvis du ser en sikkerhetsadvarsel i meldingsfeltet, bli redigeringsspørringer deaktivert. Hvis du vil aktivere redigeringsspørringer, klikker du Aktiver innhold i meldingsfeltet.

  5. Dobbeltklikk stjernen (*) for å bruke alle feltene i unionsspørringen til å opprette en ny tabell i utformingsrutenettet for spørringen, på objektkategorien for unionsspørringen.

  6. Klikk Lag tabell i Spørringstype-gruppen på fanen Utforming.

  7. Skriv inn et navn for den nye tabellen i dialogboksen Lag tabell.

  8. Du kan også angi en annen database der du vil opprette tabellen.

  9. Klikk OK.

  10. Klikk Kjør i Resultater-gruppen i kategorien Utforming.

Bruke en unionsspørring til å utføre en full ytre sammenføyning:

Du kan bruke en unionsspørring til å utføre en full ytre kobling. En full ytre sammenføyning legger ikke begrensninger på radene som returneres fra noen av de sammenføyde tabellene, men kombinerer rader på grunnlag av verdiene i sammenføyningsfeltet.

  1. Opprett en spørring som har en venstre ytre sammenføyning på feltet du vil bruke til en full ytre sammenføyning.

  2. Klikk Vis i gruppen Visninger i kategorien Hjem, og klikk deretter SQL-visning.

  3. Trykk Ctrl + C for å kopiere SQL-koden.

  4. Slett semikolonet på slutten av FROM-setningsdelen, og trykk deretter Enter.

  5. Skriv UNION, og trykk deretter Enter.

    Merknad: Ikke bruk nøkkelordet ALL når du bruker en unionsspørring til å utføre en full ytre sammenføyning.

  6. Trykk Ctrl + V for å lime inn SQL-koden du kopierte i trinn 3.

  7. I koden du limte inn, endrer du LEFT JOIN til RIGHT JOIN.

  8. Slett semikolonet på slutten av andre FROM-setningsdelen, og trykk deretter Enter.

  9. Legg til en WHERE-setningsdel som angir at verdien til sammenføyningsfeltet skal være NULL i den første tabellen som listes opp i FROM-setningsdelen (den venstre tabellen).

    Tenk deg at FROM-setningen for eksempel er:

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

    Du vil legge til følgende WHERE-setningsdelen:

    WHERE Products.ID IS NULL

  10. Skriv et semikolon (;) på slutten av WHERE-setningen for å angi slutten av unionsspørringen.

  11. Klikk Kjør i Resultater-gruppen i kategorien Utforming.
    Resultatet av unionsspørringen vises i dataarkvisning.

Hvis du vil ha mer informasjon, kan du se føye sammen tabeller og spørringer.

Til toppen av siden

Krav og SQL-syntaks for en unionsspørring

Noen krav til en unionsspørring

  • Du må ha samme antall utdatafeltene, i samme rekkefølge og med samme eller kompatible datatyper utvalgsspørringer som du kombinere i unionsspørringen. Når du kjører en unionsspørring, kombineres data fra hvert sett med tilsvarende felt i ett utdatafelt slik at resultatet av spørringen har samme antall felt som hver av SELECT-setningene.

    Merknad: For unionsspørringer er datatypene Tall og Tekst kompatible.

  • En unionsspørring er SQL-spesifikk, og derfor må være skrevet direkte i SQL. Du bytter til SQL-visning til å skrive SQL-spørringer, inkludert unionsspørringer.

SQL-syntaks for unionsspørringer

I en unionsspørring har hver utvalgsspørring (også kalt utvalgssetning) følgende setningsdeler:

Setningsdel

Inneholder en liste over...

SELECT

felt som inneholder dataene du vil hente.

FROM

tabeller som inneholder disse feltene.

Valgfritt WHERE

vilkår for disse feltene.

Utvalgssetningene kombineres med nøkkelordet UNION.

Den grunnleggende SQL-syntaksen for unionsspørringer er følgende:

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

Hvis databasen din for eksempel har en tabell med navnet Products og en annen tabell med navnet Services, og begge tabellene har felt som inneholder navnet på produktet eller tjenesten, prisen, garantiinformasjon og om du tilbyr produktet eller tjenesten eksklusivt. Selv om tabellen Products bruker "warranty_available" og tabellen Services bruker "guarantee_available", er informasjonen i bunn og grunn den samme (om et bestemt produkt eller en bestemt tjeneste leveres med et løfte om kvalitet eller ikke). Du kan bruke en unionsspørring, for eksempel spørringen under, til å kombinere de fire feltene fra de to tabellene:

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

La oss ta for oss det foregående syntakseksemplet linje for linje:

Syntaks

Forklaring

Mer informasjon

SELECT name, price, warranty_available, exclusive_offer

Første SELECT-setningsdel

SELECT etterfølges av en liste med identifikatorer som angir feltene du vil hente data.

En SELECT-setningsdel må liste opp minst ett felt.

Denne SELECT-setningsdelen lister i feltidentifikatorene name, price, warranty_availableog exclusive_offer.

FROM Products

Første FROM-setningsdel

En FROM-setningsdel etterfølger en SELECT-setningsdelen, og sammen utgjør de en grunnleggende SELECT-setning.

FROM etterfølges av en liste med identifikatorer som angir hvilke tabeller som inneholder feltene som er oppført i SELECT-setningsdelen.

En FROM-setningsdel må liste opp minst én tabell.

Denne FROM-setningsdelen lister opp tabellidentifikatoren Products.

UNION ALL

UNION-nøkkelordet og det valgfrie ALL-nøkkelordet.

Resultatene av SELECT-setningen som kommer foran UNION kombineres med resultatene av SELECT-setningen som etterfølger UNION.

Når du bruker ALL-nøkkelordet, fjernes ikke duplikatrader fra resultatet av unionsspørringen.

Ved hjelp av ALL-nøkkelordet kan spørringen kjøre raskere fordi Access ikke trenger å kontrollere om duplikatrader.

Bruk ALL-nøkkelordet Hvis noen av følgende betingelser er oppfylt:

  • Du er sikker på at utvalgsspørringene ikke produsere noen duplikatrader.

  • Det spiller ingen rolle til deg om resultatene har duplikatrader.

  • Du ønsker å se duplikatrader.

SELECT name, price, guarantee_available, exclusive_offer

Andre SELECT-setningsdelsdel

Noen regler:

  • Andre SELECT-setningsdelen må ha samme antall felt som første SELECT-setningsdelen.

  • Felt som deler felles data skal vises i samme rekkefølge i setningsdelene.

  • Felt som deler felles data, må du ha samme eller kompatible datatyper.

Merknad: Navnene på feltene i resultatet av en unionsspørring er fra første SELECT-setningsdelen. I eksemplet vårt, så kalles data fra feltet "warranty_available" og feltet "guarantee_available" "warranty_available" i spørringsresultatet.

FROM Services

Andre FROM-setningsdel

Det er ingen begrensninger på tabellene i FROM-setningsdeler på en unionsspørring. Du kan opprette en unionsspørring som bruker samme tabellene i hver FROM-setningsdelen. Du kan ha ulikt antall tabeller i fra-setningene. I eksemplet vårt har fra setningene hver bare én tabell.

Til toppen av siden

Merknad: Ansvarsfraskrivelse for maskinoversettelse: Denne artikkelen er oversatt av et datasystem i stedet for en oversetter. Microsoft tilbyr disse maskinoversettelsene slik at brukere som ikke snakker engelsk, får tilgang til innhold om Microsoft-produkter, -tjenester og –teknologier. Ettersom artikkelen er maskinoversatt, kan den inneholde feil i vokabular, syntaks eller grammatikk.

Utvid ferdighetene dine
Utforsk opplæring
Vær først ute med de nye funksjonene
Bli med i Office Insiders

Var denne informasjonen nyttig?

Takk for tilbakemeldingen!

Takk for tilbakemeldingen! Det høres ut som det kan være lurt å sette deg i kontakt med én av våre Office-kundestøtteagenter.

×