Føye sammen tabeller og spørringer

Gjelder for
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Når du inkluderer flere datakilder i en Access-spørring, bruker du sammenføyninger til å begrense postene du vil se, basert på hvordan datakildene er relatert til hverandre. Du kan også bruke sammenføyninger til å kombinere poster fra begge datakildene, slik at hvert postpar fra kildene blir én post i spørringsresultatene.

Denne artikkelen omhandler de ulike typene sammenføyninger og viser hvordan du bruker dem i en spørring. Som standard opprettes en kobling automatisk hvis det allerede finnes en relasjon mellom to datakilder som du bruker i en spørring. En kobling opprettes også hvis det finnes felt som tydelig samsvarer med hverandre. Du kan slette en automatisk opprettet sammenføyning. Denne artikkelen gir grunnleggende informasjon om tabellrelasjoner, inkludert hvordan du oppretter dem.

Obs!

Du kan sammenføye spørringer på samme måte som du sammenføyer tabeller, og kan også sammenføye begge.

I denne artikkelen

Oversikt

En database er en samling tabeller med data som har logiske relasjoner til hverandre. Du bruker relasjoner til å koble tabeller ved hjelp av felt de har til felles. En tabell kan være en del av et hvilket som helst antall relasjoner, men hver relasjon har alltid nøyaktig to tabeller. I en spørring representeres en relasjon av en sammenføyning.

Når du legger til tabeller i en spørring, oppretter Access koblinger som er basert på relasjoner som er definert mellom tabellene. Du kan opprette koblinger manuelt i spørringer, selv om de ikke representerer relasjoner som allerede er definert. Hvis du bruker andre spørringer (i stedet for eller i tillegg til tabeller) som datakilder for en spørring, kan du opprette koblinger mellom kildespørringene, og også mellom disse spørringene og eventuelle tabeller du bruker som datakilder.

Sammenføyninger fungerer på samme måte som spørringsvilkår ved at de etablerer regler som dataene må samsvare med for å inkluderes i spørringsoperasjonene. I motsetning til vilkårene angir sammenføyninger også at hvert radpar som oppfyller sammenføyningsbetingelsene, skal kombineres i postsettet til en enkelt rad.

Det finnes fire hovedtyper sammenføyninger: indre sammenføyninger, ytre sammenføyninger, krysssammenføyninger og ulike sammenføyninger. Denne artikkelen tar for seg hver type sammenføyning du kan bruke, hvorfor du bruker hver type, og hvordan du oppretter sammenføyningene.

Sammenføyninger er til spørringer hva relasjoner er til tabeller: En indikasjon på hvordan data i to kilder kan kombineres basert på dataverdier de har til felles. Her er en illustrasjon av en sammenføyning i utformingsvisning for spørringer, med sammenføyningens egenskaper åpne i en dialogboks:

Boksen Sammenføyningsegenskaper.

Denne linjen mellom tabellene representerer sammenføyningen. Dobbeltklikk på en sammenføyning for å åpne dialogboksen Sammenføyningsegenskaper (avbildet) og se gjennom eller endre sammenføyningen.

Sammenføyningene er noen ganger retningsbestemte. Dette området i dialogboksen viser hvilken tabell som er lik i sammenføyningen, og hvilke felt som brukes til å føye sammen tabellene.

Dette området bestemmer typen sammenføyning: alternativ 1 er en indre sammenføyning, 2 er en venstre ytre sammenføyning og 3 er en høyre ytre sammenføyning.

Felt fra begge tabellene kan brukes, og data som er knyttet til en gitt aktivitet, vises fra hver av tabellene. Ingen andre data tas med i en indre sammenføyning. I ytre sammenføyning inkluderes også ikke-relaterte poster fra én tabell i spørringsresultatet.

Til toppen av siden

Typer sammenføyninger

Det finnes fire hovedtyper sammenføyninger: indre sammenføyninger, ytre sammenføyninger, krysssammenføyninger og ulike sammenføyninger. Krysskoblinger og ulike sammenføyninger er avanserte sammenføyningstyper og brukes sjelden, men du bør kjenne til dem for å ha en full forståelse av hvordan sammenføyninger fungerer.

En indre sammenføyning er en kobling der Access bare inkluderer data fra en tabell hvis det er tilsvarende data i den relaterte tabellen, og omvendt. Mesteparten av tiden bruker du indre sammenføyninger. Når du oppretter en sammenføyning og ikke angir hva slags sammenføyning det er, forutsetter Access at du vil ha en indre sammenføyning. Indre sammenføyninger er nyttige fordi de lar deg kombinere data fra to kilder basert på delte verdier – slik at du bare ser data når det finnes et fullstendig bilde.

En ytre sammenføyning er som en indre sammenføyning, men legger sammen de gjenværende radene fra én av tabellene. Ytre sammenføyninger er retningsbestemte: En venstre ytre sammenføyning inkluderer alle postene fra venstre tabell – den første tabellen i sammenføyningen – og en høyre ytre sammenføyning inkluderer alle postene fra den høyre tabellen – den andre tabellen i sammenføyningen.

Fullstendige ytre sammenføyninger: alle dataene, kombinert der det er mulig

I noen systemer kan en ytre sammenføyning inkludere alle radene fra begge tabellene, med rader kombinert når de samsvarer. Dette kalles en fullstendig ytre sammenføyning, og Access støtter dem ikke eksplisitt. Du kan imidlertid bruke krysskobling og vilkår for å oppnå samme effekt.

Krysskoblinger: alle dataene, kombinert på alle mulige måter

Som oftest er en kryssammenføyning en bieffekt av å legge til to tabeller i en spørring og deretter glemme å slå dem sammen. Access tolker dette som at du ønsker å se hver post fra én tabell kombinert med hver post fra den andre tabellen – alle mulige kombinasjoner av poster. Siden ingen data kan kombineres, gir denne typen sammenføyning sjelden nyttige resultater. Men det finnes noen tilfeller der krysssammenføyning er akkurat det du trenger.

Ulike sammenføyninger: som en vanlig sammenføyning, men bruker en annen sammenligning til å kombinere rader

Ulike koblinger bruker en annen operator enn likhetstegnet (=) til å sammenligne verdier og finne ut om og hvordan dataene skal kombineres. Ulike koblinger støttes ikke eksplisitt, men du kan bruke en krysskobling og vilkår for å oppnå samme effekt.

Vise rader der det finnes en felles verdi i begge de sammenføyde tabellene

Hvis du bare vil vise de radene som har samsvarende verdier i det sammenføyde feltet, bruker du en indre sammenføyning. Access oppretter indre sammenføyninger automatisk.

Indre sammenføyninger er den vanligste sammenføyningstypen. De forteller en spørring at radene fra én av de sammenføyde tabellene tilsvarer rader i den andre tabellen, på grunnlag av dataene i de sammenføyde feltene. Når en spørring med en indre sammenføyning kjøres, inkluderes bare de radene med en felles verdi i begge de sammenføyde tabellene i spørringsoperasjonene.

Hvordan bruker jeg en indre sammenføyning?

Som oftest trenger du ikke å gjøre noe for å bruke en indre sammenføyning. Hvis tabellene du legger til i en spørring, allerede har relasjoner, oppretter Access automatisk en indre kobling mellom hvert par med relaterte tabeller når du legger til tabellene. Hvis referanseintegritet håndheves, viser Access også et 1-tall over koblingslinjen for å angi hvilken tabell som er på «én»-siden i en én-til-mange-relasjon, og et uendeligsymbol () for å angi hvilken tabell som er på «mange»-siden.

Selv om du ikke har opprettet relasjoner, oppretter Access automatisk indre sammenføyninger hvis du legger til to tabeller i en spørring og disse tabellene har et felt med samme eller kompatible datatype og ett av sammenføyningsfeltene er en primærnøkkel. Symbolene "én" og "mange" vises ikke i dette tilfellet fordi referanseintegritet ikke fremtvinges.

Hvis du legger til spørringer i spørringen, og ikke har opprettet relasjoner mellom disse spørringene, oppretter Access ikke automatisk indre koblinger mellom disse spørringene eller mellom spørringer og tabeller. Vanligvis bør du opprette dem selv. Du oppretter en indre kobling ved å dra et felt fra én datakilde til et felt i en annen datakilde. Access viser en linje mellom de to feltene for å vise at en kobling er opprettet.

SQL-syntaks for en indre kobling

Indre sammenføyninger er angitt i SQL i FROM-setningsdelen, som vist nedenfor:

FROM tabell1 INNER JOIN tabell2 ON tabell1. felt1 sammenligne tabell2. felt2

Operasjonen INNER JOIN har følgende deler:

Del Beskrivelse
tabell1, tabell2 Navnene på tabellene som postene kombineres fra.
felt1, felt2 Navnene på de koblede feltene. Hvis de ikke er numeriske, må feltene være av samme datatype og inneholde samme type data, men de trenger ikke ha samme navn.
sammenlign En hvilken som helst operator for relasjonssammenligning: "=," "," "<><," "=,"> eller "."<>

Hvis du vil ha mer informasjon om syntaksen for indre sammenføyning, kan du se emnet Operasjonen INDRE SAMMENFØYNING.

Til toppen av siden

Vis alle rader fra én tabell og tilsvarende rader fra den andre tabellen

Ytre sammenføyninger forteller en spørring at selv om noen av radene på begge sider av sammenføyningen samsvarer nøyaktig, bør spørringen inkludere alle radene fra én tabell, og også de radene fra den andre tabellen som deler en felles verdi på begge sider av sammenføyningen.

Ytre sammenføyninger kan være venstre ytre sammenføyninger eller kan være høyre ytre sammenføyninger. I en venstre ytre kobling inkluderer spørringen alle radene fra den første tabellen i SQL-setningen FROM-setningsdelen og bare de radene fra den andre tabellen der sammenføyningsfeltet inneholder verdier som er felles for begge tabellene. I høyre ytre kobling inkluderer spørringen alle radene fra den andre tabellen i SQL-setningen FROM-setningsdel, og bare de radene fra den andre tabellen der sammenføyningsfeltet inneholder verdier som er felles for begge tabellene.

Obs!

Du kan enkelt se hvilken tabell som er venstre eller høyre tabell i en gitt sammenføyning ved å dobbeltklikke sammenføyningen og deretter se i dialogboksen Sammenføyningsegenskaper . Du kan også bytte til SQL-visning og deretter undersøke FROM-setningsdelen.

Fordi noen av radene på én side av en ytre kobling ikke har tilsvarende rader fra den andre tabellen, vil noen av feltene som returneres i spørringsresultatet fra den andre tabellen være tomme når radene ikke samsvarer.

Hvordan bruker jeg en ytre sammenføyning?

Du oppretter en ytre sammenføyning ved å endre en eksisterende indre sammenføyning. Hvis det ikke finnes en indre sammenføyning, oppretter du en, og deretter endrer du den til en ytre sammenføyning.

Endre en indre kobling til en ytre kobling

  1. Dobbeltklikk på sammenføyningen du vil endre, i utformingsvisning for spørringer.
    Dialogboksen Sammenføyningsegenskaper vises.
  2. Legg merke til valgene som er oppført ved siden av alternativ 2 og alternativ 3, i dialogboksen Koblingsegenskaper.
  3. Klikk på alternativet du vil bruke, og klikk deretter på OK.
  4. Access viser sammenføyningen og viser en pil som peker fra datakilden der alle radene skal inkluderes, til datakilden der bare de radene som oppfyller sammenføyningsbetingelsen, tas med.

Tvetydige ytre sammenføyninger

Hvis du oppretter en spørring som inneholder en LEFT JOIN og en INNER JOIN, kan det hende Access ikke kan finne ut hvilken JOIN-operasjon som skal utføres først. Siden resultatene er forskjellige avhengig av om venstre eller indre sammenføyning utføres først, viser Access en feilmelding:

Hvis du vil rette denne feilen, må du endre spørringen slik at det er klart hvilken kobling som skal utføres først.

SQL-syntaks for en ytre kobling

Ytre sammenføyninger er angitt i SQL i FROM-setningen, som vist nedenfor:

FROM tabell1 [ VENSTRE | RIGHT ] JOIN tabell2
ON tabell1.felt1 sammenlign tabell2.felt2

LEFT JOIN- og RIGHT JOIN-operasjonene har følgende deler:

Del Beskrivelse
tabell1, tabell2 Navnene på tabellene som postene kombineres fra.
felt1, felt2 Navnene på de koblede feltene. Feltene må være av samme datatype og inneholde samme type data, men de trenger ikke ha samme navn.
sammenlign En hvilken som helst operator for relasjonssammenligning: "=," "," "<><," "=,"> eller "."<>

Hvis du vil ha mer informasjon om syntaksen for ytre sammenføyning, kan du se emnet LEFT JOIN, RIGHT JOIN.

Til toppen av siden

Vise alle radene fra begge tabellene, og koble dem der det finnes en felles verdi

Når du vil vise alle radene fra to tabeller og koble dem sammen basert på felles verdier, bruker du en fullstendig ytre sammenføyning. Access støtter ikke eksplisitt fullstendige ytre sammenføyninger, men du kan oppnå samme effekt ved hjelp av en unionsspørring. Den følgende fremgangsmåten forklarer hvordan du gjør dette, men hvis du vil ha mer informasjon om unionsspørringer, kan du se også seksjonen.

Slik bruker du en unionsspørring til å utføre en fullstendig ytre sammenføyning:

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

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

  3. Trykk på CTRL+C for å kopiere SQL-koden.

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

  5. Skriv inn UNION, og trykk deretter på ENTER.

    Obs!

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

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

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

  8. Slett semikolonet på slutten av den andre FROM-setningen, og trykk deretter ENTER.

  9. Legg til en WHERE-setningsdel som angir at verdien i sammenføyningsfeltet er NULL i den første tabellen som er oppført i FROM-setningsdelen (den venstre tabellen).
    Hvis for eksempel FROM-setningsdelen er:

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

    Du vil legge til følgende WHERE-setning:
    WHERE Products.ID IS NULL

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

  11. Klikk på Kjør i Resultater-gruppen på Utforming-fanen.

Krysssammenføyninger

Krysssammenføyninger er forskjellig fra indre og ytre sammenføyninger ved at de ikke er eksplisitt representert i Access. I en krysssammenføyning blir hver rad fra én tabell kombinert med hver rad fra en annen tabell, noe som resulterer i det som kalles et kryssprodukt eller et kartesiansk produkt. Hver gang du kjører en spørring som har tabeller som ikke er eksplisitt sammenføyd, blir resultatet et kryssprodukt. Krysssammenføyninger er vanligvis utilsiktede, men det finnes tilfeller der de kan være nyttige.

Hvorfor bør jeg bruke en krysssammenføyning?

Hvis du vil undersøke alle mulige kombinasjoner av rader mellom to tabeller eller spørringer, kan du bruke en krysskobling. La oss for eksempel si at bedriften har hatt et spektakulært år, og du vurderer å gi rabatter til kundene. Du kan bygge en spørring som summerer hver kundes kjøp, opprette en liten tabell som har flere mulige rabattprosenter, og kombinere de to i en annen spørring som utfører en krysskobling. Du ender opp med en spørring som viser et sett hypotetiske rabatter for hver kunde.

Hvordan bruker jeg en krysssammenføyning?

En krysskobling produseres hver gang du inkluderer tabeller eller spørringer i spørringen, og det opprettes ikke minst én eksplisitt kobling for hver tabell eller spørring. Access kombinerer hver rad fra hver tabell eller spørring som ikke er eksplisitt koblet til en annen tabell eller spørring til annenhver rad i resultatene. Vurder rabattscenarioet fra forrige avsnitt. La oss si at du har 91 kunder, og at du vil se på fem mulige rabattprosenter. Den krysssammenføyningen produserer 455 rader (produktet av 91 og 5).

Som du kanskje kan forestille deg, kan utilsiktede krysskoblinger opprette et stort antall rader i spørringsresultatene. Dessuten er disse resultatene generelt meningsløse, for hvis du ikke har tenkt å kombinere hver rad med annenhver rad, vil de fleste kombinerte radene som vises i resultatene, ikke være fornuftige. Spørringer som bruker utilsiktede krysskoblinger, kan også bruke svært lang tid på å kjøre.

Utilsiktet kryssammenføyning i spørringens utformingsvisning 1. Feltene med ring skal være koblet til hverandre.

Utilsiktet kryssprodukt 1. Legg merke til det svært store antallet poster.

Det korrigerte spørringsresultatet 1. Vær oppmerksom på at antallet poster er mye mindre.

Til toppen av siden

Føy sammen tabeller basert på en ulikhet i feltverdier

Sammenføyninger trenger ikke å være basert på ekvivalensen til de sammenføyde feltene. En sammenføyning kan baseres på en hvilken som helst sammenligningsoperator, for eksempel større enn (),> mindre enn (<), eller ikke lik (<>). Sammenføyninger som ikke er basert på ekvivalens, kalles ulike sammenføyninger.

Hvis du vil kombinere radene i to datakilder basert på feltverdier som ikke er like, bruker du en forskjellig sammenføyning. Vanligvis er ulike koblinger basert på sammenligningsoperatorer som er større enn (>), mindre enn (<), større enn eller lik (>=) eller mindre enn eller lik (<=). Ulike koblinger som er basert på operatoren Ikke lik (<>), kan returnere nesten like mange rader som krysskoblinger, og resultatene kan være vanskelige å tolke.

Hvordan bruker jeg en ulik sammenføyning?

Ulike sammenføyninger støttes ikke i utformingsvisning. Hvis du vil bruke dem, må du gjøre det ved hjelp av SQL-visning. Du kan imidlertid opprette en sammenføyning i utformingsvisning, bytte til SQL-visning, finne sammenligningsoperatoren er lik (=) og endre den til operatoren du vil bruke. Når du har gjort dette, kan du bare åpne spørringen i utformingsvisning igjen hvis du først endrer sammenligningsoperatoren tilbake til er lik (=) i SQL-visning.

Slette en sammenføyning

Hvis Access automatisk oppretter en kobling du ikke vil ha, eller hvis du oppretter en kobling ved en feiltakelse, for eksempel en kobling mellom to felt som har ulike datatyper, kan du slette koblingen.

  1. Klikk sammenføyningen du vil fjerne, i utformingsrutenettet for spørringen.
  2. Trykk DEL.

– eller –

  • Høyreklikk på sammenføyningen du vil fjerne, i utformingsrutenettet for spørringen, og klikk deretter på Slett.

Til toppen av siden

Legge til poster i en tabell ved å bruke en tilføyingsspørringKombinere resultatene av flere utvalgsspørringer ved å bruke en unionsspørringOpprette en spørring basert på flere tabellerOpprette, redigere eller slette en relasjon