Forbind tabeller og forespørgsler

Bemærk!: Vi vil gerne give dig den mest opdaterede hjælp, så hurtigt vi kan, på dit eget sprog. Denne side er oversat ved hjælp af automatisering og kan indeholde grammatiske fejl og unøjagtigheder. Det er vores hensigt, at dette indhold skal være nyttigt for dig. Vil du fortælle os, om oplysningerne var nyttige for dig, nederst på denne side? Her er artiklen på engelsk så du kan sammenligne.

Når du medtager flere datakilder i en Access-forespørgsel, kan du bruge joinforbindelser til at begrænse de poster, du vil se, baseret på, hvordan datakilderne er relateret til hinanden. Du kan også bruge joinforbindelser til at kombinere poster fra begge datakilder, så hvert par af poster fra kilderne bliver én post i forespørgselsresultaterne.

I denne artikel beskrives de forskellige typer joinforbindelser, og du får vist, hvordan du bruger dem i en forespørgsel. Som standard oprettes der automatisk en joinforbindelse, hvis der allerede findes en relation mellem to datakilder, som du bruger i en forespørgsel. Der oprettes også en joinforbindelse, hvis der er felter, der tydeligt svarer til hinanden. Du kan slette en automatisk oprettet joinforbindelse. Denne artikel indeholder grundlæggende oplysninger om tabelrelationer, herunder hvordan du opretter en.

Bemærk!: Du kan deltage i forespørgsler på samme måde, som du deltager i tabeller, og de kan også være medlem af begge.

I denne artikel

Oversigt

Typer af joinforbindelser

Vise rækker, hvor der findes en fælles værdi i begge de joinforbundne tabeller

Vise alle rækker fra én tabel og tilsvarende rækker fra den anden tabel

Vis alle rækker fra begge tabeller, og Deltag i dem, hvor der findes en fælles værdi

Kryds joinforbindelser

Forbinde tabeller, der er baseret på en værdi for feltværdier

Slette en joinforbindelse

Oversigt

En database er en samling af datatabeller, der opfører logiske relationer til hinanden. Du kan bruge relationer til at forbinde tabeller ud fra felter, de har til fælles. En tabel kan være en del af et hvilket som helst antal relationer, men hver relation har altid nøjagtigt to tabeller. I en forespørgsel repræsenteres en relation af en joinforbindelse.

Når du føjer tabeller til en forespørgsel, opretter Access joinforbindelser, der er baseret på relationer, der er defineret mellem tabellerne. Du kan oprette joinforbindelser manuelt i forespørgsler, også selvom de ikke repræsenterer relationer, der allerede er blevet defineret. Hvis du bruger andre forespørgsler (i stedet for eller ud over tabeller) som kilder til data for en forespørgsel, kan du oprette joinforbindelser mellem kilde forespørgslerne og også mellem disse forespørgsler og de tabeller, du bruger som datakilder.

Joinforbindelser fungerer på samme måde som forespørgselskriterier i, at de opretter regler om, at dataene skal stemme overens med i forespørgsels handlingerne. I modsætning til kriterier angiver joinforbindelser også, at hvert par af rækker, der opfylder joinforbindelses betingelserne, kombineres i postsættet for at danne en enkelt række.

Der er fire grundlæggende typer af joinforbindelser: indre joinforbindelser, ydre joinforbindelser, kryds joinforbindelser og ulige joinforbindelser. I denne artikel gennemgås hver type joinforbindelse, du kan bruge, hvorfor du bruger hver type, og hvordan du opretter joinforbindelserne.

Joinforbindelser er for forespørgsler, hvilke relationer der er til tabeller: en indikation af, hvordan data i to kilder kan kombineres ud fra de dataværdier, de har til fælles. Her kan du se en illustration af en joinforbindelse i forespørgsels design, hvor joinforbindelsens egenskaber åbnes i en dialogboks:

Feltet Joinegenskaber.

Denne linje mellem tabellerne repræsenterer joinforbindelsen. Dobbeltklik på en joinforbindelse for at åbne dialogboksen Egenskaber for joinforbindelse (afbildet) og gennemse eller ændre joinforbindelsen.

Joinforbindelser er nogle gange en retning. Dette område i dialogboksen viser, hvilken tabel der er i joinforbindelsen, og hvilke felter der bruges til at forbinde tabellerne.

Dette område bestemmer typen af joinforbindelse: mulighed 1 er en indre joinforbindelse, 2 er en venstre ydre joinforbindelse, og 3 er en højre ydre joinforbindelse.

Felter fra begge tabeller kan bruges, og de data, der gælder for en given opgave, vises fra hver. I en indre joinforbindelse medtages ingen andre data. I en ydre joinforbindelse medtages ikke-relaterede poster fra én tabel også i forespørgselsresultaterne.

Toppen af siden

Typer af joinforbindelser

Der er fire grundlæggende typer af joinforbindelser: indre joinforbindelser, ydre joinforbindelser, kryds joinforbindelser og ulige joinforbindelser. Kryds joinforbindelser og ulige joinforbindelser er avancerede deltagelses typer og bruges sjældent, men du bør vide om dem for at få en fuld forståelse for, hvordan joinforbindelser fungerer.

Indre joinforbindelser: kun relaterede data fra begge tabeller kombineret

En indre joinforbindelse er en, hvor Access kun medtager data fra en tabel, hvis der er tilsvarende data i den relaterede tabel og omvendt. I de fleste tilfælde vil du bruge indre joinforbindelser. Når du opretter en joinforbindelse og ikke angiver, hvilken type joinforbindelse det er på, antages det, at du vil have en indre joinforbindelse. Indre joinforbindelser er nyttige, fordi de gør det muligt at kombinere data fra to kilder baseret på delte værdier – så du kun får vist data, når der er et komplet billede.

Ydre joinforbindelser: alle relaterede data kombineres korrekt plus alle de resterende poster fra én tabel

En ydre joinforbindelse fungerer som en indre joinforbindelse, men tilføjer de resterende rækker fra en af tabellerne. Ydre joinforbindelser er retningsbestemt: en venstre ydre joinforbindelse omfatter alle posterne fra den venstre tabel – den første tabel i joinforbindelsen – og en højre ydre joinforbindelse omfatter alle posterne fra den højre tabel – den anden tabel i joinforbindelsen.

Fulde ydre joinforbindelser: alle data, kombineret hvor det er muligt

I nogle systemer kan en ydre joinforbindelse medtage alle rækker fra begge tabeller, med rækker, der er kombineret, når de svarer til hinanden. Dette kaldes en fuld ydre joinforbindelse, og Access understøtter ikke eksplicit dem. Du kan dog bruge en kryds joinforbindelse og kriterier for at opnå samme effekt.

Kryds joinforbindelser: alle dataene kombineret hver mulige måde

I de fleste tilfælde er en krydsjoinforbindelse en sideeffekt ved at tilføje to tabeller til en forespørgsel og derefter glemme for at deltage i dem. Access fortolker dette for at betyde, at du vil se alle poster fra én tabel, der er kombineret med hver post fra den anden tabel – alle mulige kombinationer af poster. Da ingen data kan kombineres, giver denne type joinforbindelse sjældent nyttige resultater. Men der er nogle tilfælde, hvor en kryds joinforbindelse er lige det, du har brug for.

Ulige joinforbindelser: ligesom en almindelig joinforbindelse, men brug en anden sammenligning til at kombinere rækker

Ulige joinforbindelser bruger en anden operator end lighedstegnet (=) til at sammenligne værdier og bestemme, om og hvordan dataene skal kombineres. Ulige joinforbindelser understøttes ikke eksplicit, men du kan bruge en kryds joinforbindelse og kriterier for at opnå samme effekt.

Vise rækker, hvor der findes en fælles værdi i begge de joinforbundne tabeller

Hvis du kun vil have vist de rækker, der har tilsvarende værdier i det joinforbundne felt, skal du bruge en indre joinforbindelse. Der oprettes automatisk indre joinforbindelser i Access.

Indre joinforbindelser er den mest almindelige type joinforbindelse. De fortæller en forespørgsel om, at rækker fra en af de joinforbundne tabeller svarer til rækker i den anden tabel, ud fra dataene i de joinforbundne felter. Når en forespørgsel med en indre joinforbindelse køres, er det kun de rækker, hvor der findes en fælles værdi i begge af de joinforbundne tabeller, der medtages i forespørgsels handlingerne.

Hvordan bruger jeg en indre joinforbindelse?

I de fleste tilfælde behøver du ikke at gøre noget for at bruge en indre joinforbindelse. Hvis de tabeller, du føjer til en forespørgsel, allerede indeholder relationer, opretter Access automatisk en indre joinforbindelse mellem hvert par af relaterede tabeller, når du tilføjer tabellerne. Hvis referentiel integritet gennemtvinges, viser Access også et "1" oven over joinlinjen, så du kan se, hvilken tabel der er på "én"-siden af en en-til-mange-relation og et evighedssymbol (), så du kan se, hvilken tabel der er på "mange"-siden.

Selvom du ikke har oprettet relationer, opretter Access automatisk indre joinforbindelser automatisk, hvis du føjer to tabeller til en forespørgsel, og de enkelte tabeller har et felt med den samme eller kompatible datatype, og et af felterne join er en primær nøgle. Symbolerne "et" og "mange" vises ikke i dette tilfælde, da referentiel integritet ikke er gennemtvunget.

Hvis du føjer forespørgsler til din forespørgsel og ikke har oprettet relationer mellem disse forespørgsler, opretter Access ikke automatisk indre joinforbindelser mellem disse forespørgsler eller mellem forespørgsler og tabeller. Generelt bør du selv oprette dem. Du opretter en indre joinforbindelse ved at trække et felt fra én datakilde til et felt i en anden datakilde. Access viser en linje mellem de to felter for at vise, at en joinforbindelse er blevet oprettet.

SQL-syntaks for en indre joinforbindelse

Indre joinforbindelser angives i SQL i FROM-delsætningen som vist nedenfor:

FROM tabel1 INNER JOIN tabel2 ON tabel1.Felt1 Sammenlign Tabel2.felt2

Handlingen INNER JOIN består af følgende dele:

Del

Beskrivelse

tabel1, tabel2

Navnene på de tabeller, som posterne skal kombineres fra.

felt1, felt2

Navnene på de felter, der skal joinforbindes. Hvis de ikke er numeriske, skal de have samme datatype og indeholde den samme slags data, men de behøver ikke have samme navn.

sammenlign

En relationel sammenligningsoperator: "=," "<," ">," "<=," ">=" eller "<>."

Du kan finde flere oplysninger om syntaksen for indre joinforbindelser i emnet indre JOIN-handling.

Toppen af siden

Vise alle rækker fra én tabel og tilsvarende rækker fra den anden tabel

Ydre joinforbindelser fortæller en forespørgsel, at selvom nogle af rækkerne på begge sider af joinforbindelsen svarer nøjagtigt til hinanden, skal forespørgslen indeholde alle rækkerne fra én tabel og også de rækker fra den anden tabel, der deler en fælles værdi på begge sider af joinforbindelsen.

Ydre joinforbindelser kan være venstre ydre joinforbindelser eller kan være RIGHT OUTER joins. I en venstre ydre joinforbindelse inkluderer forespørgslen alle rækkerne fra den første tabel i SQL-sætningen fra-delsætningen og kun disse rækker fra den anden tabel, hvor feltet sammenføjning indeholder værdier, der er fælles for begge tabeller. I en højre ydre joinforbindelse medtager forespørgslen alle rækker fra den anden tabel i SQL-sætningen fra-delsætningen og kun disse rækker fra den anden tabel, hvor feltet joinforbindelse indeholder værdier, der er fælles for begge tabeller.

Bemærk!: Du kan nemt se, hvilken tabel der er den venstre tabel eller højre tabel i en bestemt joinforbindelse ved at dobbeltklikke på joinforbindelsen og derefter kigge i dialogboksen Egenskaber for joinforbindelse . Du kan også skifte til SQL-visning og derefter undersøge FROM-delsætningen.

Da nogle af rækkerne på den ene side af en ydre joinforbindelse ikke har tilsvarende rækker fra den anden tabel, vil nogle af de felter, der returneres i forespørgselsresultaterne fra den anden tabel, være tomme, når rækkerne ikke stemmer overens.

Hvordan bruger jeg en ydre joinforbindelse?

Du opretter en ydre joinforbindelse ved at ændre en eksisterende indre joinforbindelse. Hvis der ikke findes en indvendig joinforbindelse, skal du oprette en og derefter ændre den til en ydre joinforbindelse.

Ændre en indre joinforbindelse til en ydre joinforbindelse

  1. I forespørgsels design visning skal du dobbeltklikke på den joinforbindelse, du vil ændre.

    Dialogboksen Joinegenskaber vises.

  2. I dialogboksen Egenskaber for joinforbindelse skal du notere de valgmuligheder, der er angivet ved siden af indstilling 2 og indstilling 3.

  3. Klik på den indstilling, du vil bruge, og klik derefter på OK.

  4. Access viser joinforbindelsen og viser en pil, der peger fra den datakilde, hvor alle rækker vil blive medtaget i datakilden, hvor kun de rækker, der opfylder betingelsen for joinforbindelse, medtages.

Tvetydige ydre joinforbindelser

Hvis du opretter en forespørgsel, der indeholder en venstre JOINFORBINDELSE og en indre JOINFORBINDELSE, kan Access muligvis ikke afgøre, hvilken JOIN-handling der skal udføres først. Da resultaterne er forskellige, afhængigt af om venstre joinforbindelse eller den indre joinforbindelse udføres først, vises der en fejlmeddelelse i Access:

Hvis du vil rette denne fejl, skal du ændre forespørgslen, så den er klar, hvilken joinforbindelse der skal udføres først.

SQL-syntaks for en ydre joinforbindelse

Ydre joinforbindelser angives i SQL i FROM-delsætningen som vist nedenfor:

FRA Tabel1 [venstre | Right] Deltag i Tabel2
Tabel1. Felt1 Sammenlign Tabel2. Felt2

Handlingerne LEFT JOIN og RIGHT JOIN består af følgende dele:

Del

Beskrivelse

tabel1, tabel2

Navnene på de tabeller, som posterne skal kombineres fra.

felt1, felt2

Navnene på de felter, der skal joinforbindes. Felterne skal have samme datatype og indeholde den samme slags data, men de behøver ikke have samme navn.

sammenlign

En relationel sammenligningsoperator: "=," "<," ">," "<=," ">=" eller "<>."

Du kan finde flere oplysninger om syntaksen i ydre joinforbindelser i emnet LEFT JOIN-handlinger.

Toppen af siden

Vis alle rækker fra begge tabeller, og Deltag i dem, hvor der findes en fælles værdi

Hvis du vil vise alle rækker fra to tabeller og deltage i dem baseret på fælles værdier, skal du bruge en fuld ydre joinforbindelse. Access understøtter ikke eksplicit fulde ydre joinforbindelser, men du kan opnå samme effekt ved hjælp af en foreningsforespørgsel. Følgende fremgangsmåde beskriver, hvordan du gør dette, men hvis du vil have flere oplysninger om foreningsforespørgsler, skal du se afsnittet Se også .

Sådan bruges en foreningsforespørgsel til at udføre en fuld ydre joinforbindelse:

  1. Opret en forespørgsel, der har en venstre ydre joinforbindelse på det felt, du vil bruge til en komplet 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 må ikke bruge nøgleordet ALL, når du bruger en foreningsforespørgsel til at udføre en fuld ydre joinforbindelse.

  6. Tryk på CTRL + V for at indsætte den SQL-kode, du kopierede i trin 3.

  7. I den kode, du har indsat, skal du ændre venstre joinforbindelse til højre joinforbindelse.

  8. Slet semikolon i slutningen af den anden FROM-delsætning, og tryk derefter på ENTER.

  9. Tilføj en WHERe-delsætning, der angiver, at værdien af feltet join er NULL i den første tabel, der er angivet i FROM-delsætningen (den venstre tabel).

    Hvis FROM-delsætningen f. eks.

    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 (;) sidst i WHERe-delsætningen for at angive slutningen af foreningsforespørgslen.

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

Kryds joinforbindelser

Kryds joinforbindelser er forskellige fra indre og ydre joinforbindelser, når de ikke eksplicit er repræsenteret i Access. I en kryds joinforbindelse kombineres hver række fra én tabel med hver række fra en anden tabel, hvilket resulterer i, hvad der kaldes et krydsprodukt eller et kartesiske-produkt. Hver gang du kører en forespørgsel, der har tabeller, der ikke eksplicit er joinforbundet, er et krydsprodukt resultatet. Kryds joinforbindelser er som regel utilsigtede, men der er tilfælde, hvor de kan være nyttige.

Hvorfor skal jeg bruge en kryds joinforbindelse?

Hvis du vil undersøge alle mulige kombinationer af rækker mellem to tabeller eller forespørgsler, skal du bruge en kryds joinforbindelse. Antag f. eks., at din virksomhed har haft et Spectacular år, og at du overvejer at give dine kunder rabatter. Du kan oprette en forespørgsel, der opsummerer hver kundes salg, oprette en lille tabel, der indeholder flere mulige rabatprocenter, og kombinere de to i en anden forespørgsel, der udfører en kryds joinforbindelse. Du slutter med en forespørgsel, der viser et sæt hypotetiske rabatter for hver kunde.

Hvordan bruger jeg en kryds joinforbindelse?

En krydsjoinforbindelse bliver oprettet, hver gang du inkluderer tabeller eller forespørgsler i din forespørgsel og ikke opretter mindst én eksplicit joinforbindelse for hver tabel eller forespørgsel. Access kombinerer hver række fra hver tabel eller forespørgsel, der ikke eksplicit er knyttet til en anden tabel eller forespørgsel til hver anden række i resultaterne. Overvej rabat scenariet fra det foregående afsnit. Antag, at du har 91-kunder, og at du vil se på fem mulige rabatprocenter. Din kryds joinforbindelse producerer 455-rækker (produktet af 91 og 5).

Som du kan forestille os, kan utilsigtede kryds joinforbindelser oprette enorme antal rækker i dine forespørgselsresultater. Desuden betyder det, at disse resultater generelt ikke er velegnede, fordi de fleste af de kombinerede rækker, der vises i resultaterne, ikke giver mening, hvis du ikke har tænkt dig at kombinere hver række med hver anden række. Til sidst kan forespørgsler, der bruger utilsigtede kryds joinforbindelser, være meget lang tid om at køre.

Utilsigtet krydsjoinforbindelse i forespørgselsdesign

1. de cirkel felter skal joinforbindes med hinanden.

Utilsigtet krydsprodukt

1. Bemærk det store antal poster.

Det rettede resultat af forespørgslen

1. Bemærk, at antallet af poster er meget mindre.

Toppen af siden

Forbinde tabeller, der er baseret på en værdi for feltværdier

Joinforbindelser behøver ikke at være baseret på ækvivalensen for de joinforbundne felter. En joinforbindelse kan være baseret på en hvilken som helst sammenligningsoperator, f. eks større end (>), mindre end (<) eller ikke lig med (<>). Joinforbindelser, der ikke er baseret på ækvivalens, kaldes uens joinforbindelser.

Hvis du vil kombinere rækkerne i to datakilder baseret på feltværdier, der ikke er ens, skal du bruge en ulige joinforbindelse. Ulige joinforbindelser er typisk baseret på enten større end (>), mindre end (<), større end eller lig med (> =) eller mindre end eller lig med (< =) sammenligningsoperatorer. Ulige joinforbindelser, der er baseret på not-operatoren NOT Equals (<>), kan returnere næsten lige så mange rækker som kryds joinforbindelser, og resultaterne kan være vanskelige at fortolke.

Hvordan bruger jeg en ulige joinforbindelse?

Ulige joinforbindelser understøttes ikke i design visning. Hvis du vil bruge dem, skal du gøre det ved hjælp af SQL-visning. Du kan dog oprette en joinforbindelse i design visning, skifte til SQL-visning, finde sammenlignings operatoren er lig med (=) og ændre den til den operator, du vil bruge. Når du har gjort det, kan du kun åbne forespørgslen i design visning igen, hvis du først ændrer sammenligningsoperatoren tilbage til er lig med (=) i SQL-visning.

Slette en joinforbindelse

Hvis Access automatisk opretter en joinforbindelse, som du ikke ønsker, eller hvis du opretter en joinforbindelse ved en fejl – f. eks en joinforbindelse mellem to felter, der har datatyper, der ikke er ens, kan du slette joinforbindelsen.

  1. I forespørgselsdesigngitteret skal du klikke på den joinforbindelse, du vil fjerne.

  2. Tryk på DELETE.

Eller

  • I forespørgselsdesigngitteret skal du højreklikke på den joinforbindelse, du vil fjerne, og derefter klikke på Slet.

Toppen af siden

Se også

Føje poster til en tabel ved hjælp af en tilføjelsesforespørgsel

Kombinere resultaterne af flere udvælgelsesforespørgsler ved hjælp af en foreningsforespørgsel

Oprette en forespørgsel, der er baseret på flere tabeller

Oprette, redigere eller slette en relation

Udvid dine Office-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.

×