Joinforbinde tabeller og forespørgsler

Joinforbinde tabeller og forespørgsler

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

Når du medtager flere datakilder i en Access-forespørgsel, kan du bruge joinforbindelser til at begrænse det antal poster, du vil have vist, baseret på hvordan datakilderne er relateret til hinanden. Du 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 viser, hvordan du bruger dem i en forespørgsel. Som standard oprettes en joinforbindelse automatisk, hvis der allerede findes en relation mellem to datakilder, der bruges i en forespørgsel. En joinforbindelse, oprettes der også, hvis der er felter, der tydeligt svarer til hinanden. Du kan slette en automatisk oprettede joinforbindelse. I denne artikel indeholder grundlæggende oplysninger om tabelrelationer, herunder hvordan du opretter en.

Bemærk: Du kan deltage forespørgsler på samme måde, at du joinforbinde tabeller og kan også deltage begge.

Denne artikel indeholder

Oversigt

Typer af joinforbindelser

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

Vis alle rækkerne fra en tabel og alle de tilsvarende rækker fra anden tabellen

Viser alle rækker fra begge tabeller og deltage i, hvor der findes en fælles værdi

Krydsjoinforbindelser

Joinforbinde tabeller, der er baseret på forskelle i feltværdier

Slette en joinforbindelse

Oversigt

En database er en samling af tabeller med data, der har logiske relationer til hinanden. Du kan bruge relationer til at forbinde tabeller efter felter, som de har til fælles. En tabel kan være en del af et vilkårligt antal relationer, men hver relation har altid præcis to tabeller. En relation er repræsenteret af en joinforbindelse i en forespørgsel.

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 manuelt oprette joinforbindelser i forespørgsler, selvom de ikke repræsenterer relationer, der allerede er defineret. Hvis du bruger andre forespørgsler (i stedet for eller ud over tabeller) som datakilder for en forespørgsel, kan du oprette joinforbindelser mellem forespørgsler kilder og mellem disse forespørgsler og alle tabeller, du bruger som datakilder.

Joinforbindelser fungerer på samme måde at forespørgselskriterier i den valgte de fastlægger regler, som data skal opfylde for at blive medtaget i forespørgslerne. I modsætning til kriterier, skal du angive joinforbindelser også, at hvert par af rækker, der opfylder betingelserne, der joinforbindelse der skal kombineres i postsættet til at danne en enkelt række.

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

Joinforbindelser bruges i forespørgsler på samme måde som relationer bruges i tabeller: de angiver, hvordan dataene i to kilder kan kombineres baseret på de dataværdier, der er fælles. Her er en illustration af en joinforbindelse i designvisning for en forespørgsel med egenskaberne for joinforbindelsen åbnet i en dialogboks:

Feltet Joinegenskaber.

Denne linje mellem tabellerne repræsenterer joinforbindelsen. Dobbeltklik på en joinforbindelse til at åbne den Joinegenskaber dialogboksen (vist) og gennemse eller ændre joinforbindelsen.

Joinforbindelser kan være retningsbestemte. I dette område af dialogboksen kan du se, hvordan tabellerne bruges i joinforbindelsen, og du kan se, hvilke felter der bruges til at joinforbinde tabellerne.

Dette område bruges til at bestemme typen af joinforbindelse: indstilling 1 er en indre joinforbindelse, 2 er en venstre ydre joinforbindelse, og 3 er en højre ydre joinforbindelse.

Du kan bruge felter fra begge tabeller, og de data, der angår en given opgave vises fra hver tabel. I en indre joinforbindelse medtages der ikke andre data. I en ydre joinforbindelse medtages ikke-relaterede poster fra den ene tabel også i forespørgselsresultatet.

Toppen af siden

Typer af joinforbindelser

Der er fire grundlæggende typer joinforbindelser: indre joinforbindelser, ydre joinforbindelser, krydsjoinforbindelser og ulige joinforbindelser. Krydsjoinforbindelser og ulige joinforbindelser bruges sjældent, men du bør kende dem for at få en fuld forståelse for, hvordan joinforbindelser virker.

Indre joinforbindelser: der kombineres kun relaterede data fra begge tabeller

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

Ydre joinforbindelser: alle de relaterede data kombineres korrekt plus alle de resterende poster fra den ene tabel

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

Fuldstændige ydre joinforbindelser: alle data, som kombineres, når det er relevant

I nogle systemer kan en ydre joinforbindelse medtage alle rækker fra begge tabeller, og rækkerne kombineres, når de svarer til hinanden. Dette kaldes en fuldstændig ydre joinforbindelse. Denne type joinforbindelse understøttes ikke eksplicit i Access. Du kan dog bruge en krydsjoinforbindelse og kriterier til at opnå den samme effekt.

Krydsjoinforbindelser: alle data, som kombineres på alle mulige måder

I de fleste tilfælde er en krydsjoinforbindelse en bivirkning, hvis man føjer to tabeller til en forespørgsel og glemmer at bruge en joinforbindelse. Det fortolker Access som om, at du gerne vil se alle posterne fra hver tabel kombineret med hver eneste post fra den anden tabel – altså alle mulige kombinationer af poster. Da dataene ikke kan kombineres, vil denne type joinforbindelse sjældent medføre brugbare resultater. Men der er nogle få tilfælde, hvor en krydsjoinforbindelse lige præcis er det, du skal bruge.

Ulige joinforbindelser: svarer til en almindlig joinforbindelse, men bruger en anden sammenligning til at kombinere rækkerne

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 krydsjoinforbindelse og kriterier til at opnå den samme effekt.

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

Hvis du kun vil se de rækker, der har ens værdier i det joinforbundne felt, skal du bruge en indre joinforbindelse. Access opretter automatisk indre joinforbindelser.

Indre joinforbindelser er den mest udbredte type af joinforbindelse. De kan se en forespørgsel, der rækker fra en af de joinforbundne tabeller svarer til rækker i anden tabellen, på grundlag af dataene i de joinforbundne felter. Når du kører en forespørgsel med en indre joinforbindelse, medtages kun de rækker, hvor der findes en fælles værdi i begge af de joinforbundne tabeller i forespørgslerne.

Hvordan bruger jeg en indvendig joinforbindelse?

For det meste 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 har relationer, oprettes der automatisk en indre joinforbindelse mellem hvert par af relaterede tabeller, når du tilføjer tabellerne. Hvis referentiel integritet gennemtvinges, vises der også et "1" oven over joinlinjen, så du kan se, hvilken tabel der er på en-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, oprettes der automatisk indvendige joinforbindelser, hvis du føjer to tabeller til en forespørgsel og disse tabeller har et felt med det samme eller kompatible datatype og en af de joinforbundne felter er en primær nøgle. "En" og "mange"-symboler vises ikke i dette tilfælde, fordi referentiel integritet ikke gennemtvinges.

Hvis du tilføjer forespørgsler til din forespørgsel, og du ikke har oprettet relationerne mellem disse forespørgsler, oprettes der ikke automatisk indre joinforbindelser mellem disse forespørgsler eller mellem forespørgsler og tabeller. Generelt skal du oprette dem dig selv. Du kan oprette en indre joinforbindelse ved at trække et felt fra en datakilde til et felt på en anden datakilde. Access viser en linje mellem de to felter til at vise, 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 Tabel2Tabel1. Felt1 sammenligne 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 i indre joinforbindelser i emnet Handlingen INNER JOIN.

Toppen af siden

Vis alle rækkerne fra en tabel og alle de tilsvarende rækker fra anden tabellen

Ydre joinforbindelser Fortæl en forespørgsel, selvom nogle af rækkerne på begge sider af joinforbindelsen svarer nøjagtigt, bør forespørgslen medtage alle rækkerne fra en tabel, og de rækker fra anden tabellen, der deler en fælles værdi på begge sider af joinforbindelsen.

Ydre joinforbindelser kan være venstre ydre joinforbindelser eller højre ydre joinforbindelser. I en venstre ydre joinforbindelse omfatter forespørgslen alle rækkerne fra den første tabel i SQL-sætningens FROM-delsætning og kun de rækker fra den anden tabel, hvor joinfeltet indeholder værdier, der er fælles for begge tabeller. I en højre ydre joinforbindelse omfatter forespørgslen alle rækkerne fra den anden tabel i SQL-sætningens FROM-delsætning og kun de rækker fra den anden tabel, hvor joinfeltet indeholder værdier, der er fælles for begge tabeller.

Bemærk: Du kan nemt se, hvilken tabel der er tabellen til venstre eller højre tabel i en given joinforbindelse ved at dobbeltklikke på joinforbindelsen, og klik derefter søger i dialogboksen Joinegenskaber. Du kan også skifte til SQL-visning og derefter undersøge FROM-delsætningen.

Da nogle af rækkerne på en-siden af en ydre joinforbindelse ikke vil have tilsvarende rækker fra den anden tabel, vil nogle af disse felter, der returneres i forespørgselsresultaterne fra den anden tabel, være tomme, når rækkerne ikke svarer til hinanden.

Hvordan bruger jeg en ydre joinforbindelse?

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

Ændre en indre joinforbindelse til en ydre joinforbindelse

  1. Dobbeltklik i designvisning på den joinforbindelse, du vil ændre.

    Dialogboksen Joinegenskaber vises.

  2. Bemærk valgmulighederne, der vises ud for indstillingen 2 og 3-indstilling i dialogboksen Joinegenskaber.

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

  4. Der vises en joinforbindelse, og du vil kunne se en pil, der peger fra den datakilde, hvor alle rækkerne bliver medtaget, til den datakilde, hvor kun de rækker, der opfylder joinforbindelsen, bliver medtaget.

Tvetydige ydre joinforbindelser

Hvis du opretter en forespørgsel, der indeholder en LEFT JOIN og en indre JOINFORBINDELSE, Access muligvis ikke kunne finde ud af, hvor deltage i operator, der skal udføres først. Fordi resultaterne er forskellige, afhængigt af om den venstre eller den indre joinforbindelse der udføres først, viser Access en fejlmeddelelse:

Du kan rette fejlen, skal du ændre forespørgslen, så det er tydeligt, 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 | HØJRE] JOIN Tabel2
table1.field1 sammenligne 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 og højre joinhandlinger.

Toppen af siden

Viser alle rækker fra begge tabeller og deltage i, hvor der findes en fælles værdi

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

Bruge en foreningsforespørgsel til at udføre en fuldstændig ydre joinforbindelse:

  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 den SQL-kode, du har kopieret i trin 3.

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

  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 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]

    Skal du 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.

Krydsjoinforbindelser

Krydsjoinforbindelser er anderledes end indre og ydre joinforbindelser, da de ikke eksplicit er repræsenteret i Access. I en krydsjoinforbindelse kombineres hver række fra én tabel med hver række fra en anden tabel, hvilket resulterer i det, der kaldes et krydsprodukt eller et kartesisk produkt. Hver gang du kører en forespørgsel, der indeholder tabeller, der ikke er eksplicit forbundet, er et krydsprodukt resultatet. Krydsjoinforbindelser er som regel utilsigtet, men der er tilfælde, hvor de kan være nyttige.

Hvorfor skal jeg bruge en krydsjoinforbindelse?

Hvis du vil undersøge alle mulige kombinationer af rækker mellem to tabeller eller forespørgsler, skal du bruge en krydsjoinforbindelse. Antag for eksempel dit firma har haft et fremragende år, og du overvejer at give til dine kunder. Du kan oprette en forespørgsel, der opsummerer hver enkelt kundes køb, oprette en lille tabel, der er flere mulige rabatprocenter og kombinere to i en anden forespørgsel, som udfører en krydsjoinforbindelse. Du ender med en forespørgsel, der viser et sæt hypotetiske rabatter for hver kunde.

Hvordan bruger jeg en krydsjoinforbindelse?

En krydsjoinforbindelse som helst du medtage tabeller eller forespørgsler i forespørgslen og Undlad at oprette mindst én eksplicit joinforbindelse for hver tabel eller forespørgsel. Access kombinerer hver række fra hver tabel eller forespørgsel, der ikke er eksplicit er forbundet til en anden tabel eller forespørgsel på hver anden række i resultaterne. Gennemgå rabatscenariet fra det forrige afsnit. Antag, du har 91 kunder, og, du vil se på fem mulige rabat procent. Din krydsjoinforbindelse opretter 455 rækker (produktet af 91 og 5).

Som du sikkert kan se, kan utilsigtede krydsjoinforbindelser oprette stort antal rækker i forespørgselsresultaterne. Disse resultater er desuden mening, fordi Hvis ikke faktisk standardhandling til at kombinere hver række med hver anden række, de fleste af de kombinerede rækker, der vises i resultaterne ikke giver mening. Til sidst skal kan forespørgsler, der bruger utilsigtede krydsjoinforbindelser tage meget lang tid at køre.

Utilsigtet krydsjoinforbindelse i forespørgselsdesign
En utilsigtet krydsjoinforbindelse i forespørgselsdesign.

1. cirkel felter skal være knyttet til hinanden.

Utilsigtet krydsprodukt
Det krydsprodukt, der returneres af den utilsigtet krydsjoinforbindelse vist ovenfor.

1. Bemærk meget store antallet af poster.

Det rettede resultat af forespørgslen
Resultaterne, når den rigtige joinforbindelse er blevet oprettet.

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

Toppen af siden

Joinforbinde tabeller, der er baseret på forskelle i feltværdier

Joinforbindelser behøver ikke at være baseret på, at de joinforbundne felter er identiske. En joinforbindelse kan være baseret på en hvilken som helst sammenligningsoperator, f.eks. større end (>), mindre end (<) eller er forskellig fra (<>). De joinforbindelser, der ikke er baseret på at være identiske, kaldes ulige joinforbindelser.

Hvis du vil kombinere rækkerne i to datakilder, der er baseret på feltværdier, som ikke er lig med, bruger du en ulige joinforbindelse. Ulige joinforbindelser er typisk baseret på sammenligningsoperatorerne større end (>), mindre end (<), større end eller lig med (>=) eller mindre end eller lig med (<=). De ulige joinforbindelser, der er baseret på operatoren er forskellig fra (<>), kan returnere næsten lige så mange rækker som krydsjoinforbindelser, og resultaterne kan være vanskelige at fortolke.

Hvordan bruger jeg en ulige joinforbindelse?

Ulige joinforbindelser understøttes ikke i designvisning. Hvis du vil bruge dem, skal du gøre det ved hjælp af SQL-visning. Men du kan oprette en joinforbindelse i designvisning, skifte til SQL-visning, finde er lig med (=) sammenligningsoperator, og Skift den til operatoren, du vil bruge. Når du gør dette, kan du kun åbne forespørgslen i designvisning igen Hvis du først ændrer sammenligningsoperatoren tilbage til er lig med (=) i SQL-visning.

Slette en joinforbindelse

Hvis der automatisk oprettes en joinforbindelse, som du ikke skal bruge, eller hvis du ved en fejl opretter en joinforbindelse – f.eks. en joinforbindelse mellem to felter, der ikke har samme datatyper – kan du slette joinforbindelsen.

  1. Klik på den joinforbindelse i forespørgselsdesigngitteret, du vil fjerne.

  2. Tryk på DELETE.

eller

  • I forespørgslens designgitter skal du højreklikke på den joinforbindelse, du vil fjerne, og klik derefter på Slet.

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.

Se også

Tilfø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

Opret en forespørgsel baseret på flere tabeller

Oprette, redigere eller slette en relation

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.

×