Koppla tabeller och frågor

Koppla tabeller och frågor

Viktigt!: Den här artikeln är maskinöversatt, se ansvarsfriskrivningen. Den engelska versionen av den här artikeln finns här för din referens.

När du lägger till flera datakällor i en Access-fråga bör använda du kopplingar du begränsar posterna som du vill se, baserat på hur datakällorna som är relaterade till varandra. Du också använda kopplingar för att kombinera poster från båda datakällor, så att varje par av poster från källorna blir en post i frågeresultatet.

I den här artikeln beskrivs de olika typerna av kopplingar och visar hur du använder dem i en fråga. Som standard skapas automatiskt en koppling om det redan finns en relation mellan två datakällor som du använder i en fråga. En koppling skapas även om det finns fält som tydligt överensstämmer med varandra. Du kan ta bort en automatiskt skapade koppling. I den här artikeln innehåller grundläggande information om tabellrelationer, inklusive hur du skapar en.

Obs!: Du kan ansluta till frågor på samma sätt som du koppla tabeller och kan även delta i båda.

Artikelinnehåll

Översikt

Typer av kopplingar

Visa rader där det finns ett gemensamt värde i båda kopplade tabeller

Visa alla rader från en tabell och motsvarande rader från en annan tabell

Visa alla rader från båda tabellerna och ansluta till där det finns ett gemensamt värde

Korskopplingar

Koppla tabeller baserat på olika fältvärden

Ta bort en koppling

Översikt

En databas är en samling tabeller med data som innehålla logiska relationer med varandra. Du kan använda relationer för att ansluta tabeller med fält som de har gemensamt. En tabell kan vara en del av valfritt antal relationer, men varje relation har alltid exakt två tabeller. En relation representeras av en koppling i en fråga.

När du lägger till tabeller i en fråga skapas Access kopplingar som baseras på relationer som har definierats mellan tabellerna. Du kan manuellt skapa kopplingar i frågor, även om de inte representerar relationer som redan har angetts. Om du använder andra frågor (i stället för eller tillsammans med tabeller) som datakällor för en fråga kan skapa du kopplingar mellan frågorna källa och mellan dessa frågor och tabeller som används som datakällor.

Kopplingar fungerar på samma sätt i frågevillkor att de upprätta regler som data måste matcha för att ingå i frågan åtgärder. Till skillnad från villkor ange kopplingar också att varje par av rader som uppfyller kopplingsvillkor som ska kombineras i postuppsättning att bilda en enda rad.

Det finns fyra typer av kopplingar: inre kopplingar, yttre kopplingar, kors kopplingar och kopplingar. Den här artikeln innehåller varje typ av koppling som du kan använda varför du använder varje typ och hur du skapar kopplingen.

Kopplingar är för frågor vad relationer är för tabeller, en indikering av hur data i två källor kan kombineras baserat på gemensamma datavärden. Här är en bild av en koppling i frågedesignvyn, med kopplingens egenskaper i en dialogruta:

Rutan Kopplingsegenskaper.

Den här linje mellan tabellerna representerar join. Dubbelklicka på en koppling att öppna den Kopplingsegenskaper dialogrutan (alla) och granska eller ändra join.

Ibland är kopplingar riktningskopplingar. I det här området i dialogrutan ser du vilken tabell som är vilken i kopplingen och vilka fält som används för att koppla tabellerna.

Det här området bestämmer typen av koppling. Alternativ 1 är en inre koppling, alternativ 2 är en vänster yttre koppling och alternativ 3 är en höger yttre koppling.

Fält från båda tabellerna kan användas, och data som tillhör en viss uppgift visas från varje tabell. I en inre koppling tas inga andra data med. I en yttre koppling tas även orelaterade poster från en tabell med i frågeresultatet.

Överst på sidan

Typer av kopplingar

Det finns fyra typer av kopplingar: Inre kopplingar, yttre kopplingar, korskopplingar och kopplingar mellan värden som inte är exakt lika. Korskopplingar och kopplingar mellan värden som inte är exakt lika är avancerade kopplingstyper och används sällan, men du bör känna till dem för att helt förstå hur kopplingar fungerar.

Inre kopplingar: Endast relaterade data från båda tabeller kombineras

En inre koppling är en koppling där data från en tabell endast tas med om det finns associerade data i den relaterade tabellen och tvärtom. Inre kopplingar är den vanligaste typen av koppling. När du skapar en koppling utan att ange vilken typ av koppling det är, skapas en inre koppling som standard. Inre kopplingar är praktiska eftersom de kan användas för att kombinera data från två källor baserat på gemensamma värden, så att data endast visas om det finns relaterade data.

Yttre kopplingar: Alla relaterade data kombineras plus alla återstående poster från en tabell

En yttre koppling är som en inre koppling, men lägger till de återstående raderna från en av tabellerna. Yttre kopplingar är riktningskopplingar: En vänster yttre koppling tar med alla posterna från den vänstra tabellen (den första tabellen i kopplingen) och en höger yttre koppling tar med alla posterna från den högra tabellen (den andra tabellen i kopplingen).

Fulla yttre kopplingar: Alla data, kombinerade då det är möjligt

I vissa system kan en yttre koppling ta med alla rader från båda tabeller, med rader som kombineras när de matchar. Detta kallas för en full yttre koppling, och stöds inte uttryckligen i Access. Du kan emellertid åstadkomma samma effekt genom att använda en korskoppling och villkor.

Korskopplingar: Alla data, kombinerade på alla möjliga sätt

En korskoppling är ofta en konsekvens av att du lägger till två tabeller i en fråga, men glömmer att koppla dem. I Access tolkas det som att du vill kombinera varje post från den ena tabellen med varje post från den andra tabellen, i alla möjliga kombinationer av poster. Eftersom inga data kan kombineras genererar den här typen av koppling sällan användbara resultat. Men i ett fåtal situationer kan en korskoppling vara precis vad du behöver.

Kopplingar mellan värden som inte är exakt lika: Som en vanlig koppling, men med en annan jämförelseoperator för att kombinera rader

I kopplingar mellan värden som inte är exakt lika används en annan operator än likhetstecknet (=) för att jämföra värden och avgöra om och hur data ska kombineras. Kopplingar mellan värden som inte är exakt lika stöds inte uttryckligen, men du kan åstadkomma samma resultat genom att använda en korskoppling och villkor.

Visa rader där det finns ett gemensamt värde i båda kopplade tabeller

Om du bara vill visa rader som har matchande värden i det kopplade fältet använder du en inre koppling. Inre kopplingar skapas automatiskt i Access.

Inre kopplingar är den vanligaste typen av koppling. De anger en fråga som rader från en av de kopplade tabeller motsvarar rader i tabellen andra utifrån data i de kopplade fälten. När du kör en fråga med en inre koppling med endast de rader där det finns ett gemensamt värde i båda kopplade tabeller i frågan åtgärder.

Hur använder jag en inre koppling?

Oftast behöver du inte göra något om du vill använda en inre koppling. Om det redan finns relationer mellan de tabeller som du lägger till i en fråga skapas en inre koppling automatiskt mellan varje par med relaterade tabeller när du lägger till tabellerna. Om referensintegritet används visas också "1" ovanför kopplingslinjen, som anger vilken tabell som finns på 1-sidan i en en-till-många-relation, och ett oändlighetstecken (), som anger vilken tabell som finns på N-sidan.

Även om du inte har skapat några relationer skapas inre kopplingar automatiskt om du lägger till två tabeller i en fråga och dessa tabeller har ett fält med samma eller kompatibla datatyper och ett av fälten är en primärnyckel. ”1” och ”n-symboler visas inte i det här fallet eftersom referensintegritet inte används.

Om du lägger till frågor i din fråga och inte har skapat relationer mellan dessa frågor, skapar Access inte automatiskt inre kopplingar mellan dessa frågor eller mellan frågor och tabeller. I allmänhet bör du skapa dem själv. Du skapar en inre koppling genom att dra ett fält från en datakälla till ett fält i en annan datakälla. Access visar en linje mellan de två fält som visar att en koppling har skapats.

SQL-syntax för en inre koppling

Inre kopplingar anges i SQL i instruktionen FROM, vilket visas nedan:

FROM tabell1 inre koppling tabell2tabell1. fält1 jämföra tabell2. fält2

Operationen INNER JOIN består av följande syntaktiska element:

Element

Beskrivning

tabell1, tabell2

Namnen på de tabeller som innehåller de poster som ska kombineras.

fält1, fält2

Namnen på de fält som ska kombineras. Om fälten inte är numeriska måste fälten ha samma datatyp och innehålla samma information, men de behöver inte ha samma namn.

jämföra

En jämförelseoperator: "=," "<," ">," "<=," ">=" eller "<>."

Mer information om syntaxen för inre kopplingar finns i avsnittet Operationen INNER JOIN.

Överst på sidan

Visa alla rader från en tabell och motsvarande rader från en annan tabell

Yttre kopplingar berätta för en fråga som även om några av raderna på båda sidorna om kopplingen överensstämmer exakt, frågan ska innehålla alla rader från en tabell och dessa rader från den andra tabellen som delar ett gemensamt värde på båda sidorna om kopplingen.

Yttre kopplingar kan vara vänster yttre kopplingar eller höger yttre kopplingar. I en vänster yttre koppling inkluderar frågan alla rader från den första tabellen i SQL-uttryckets FROM-sats, och bara de rader från den andra tabellen där kopplingsfältet innehåller värden som är gemensamma för båda tabellerna. I en höger yttre koppling inkluderar frågan alla rader från den andra tabellen i SQL-uttryckets FROM-sats, och bara de rader från den andra tabellen där kopplingsfältet innehåller värden som är gemensamma för båda tabellerna.

Obs!: Du kan enkelt avgöra vilken tabell är tabellen vänster eller höger tabell i en viss koppling genom att dubbelklicka på kopplingen och leta sedan i dialogrutan Kopplingsegenskaper. Du kan också växla till SQL-vy och sedan granska FROM-satsen.

Eftersom vissa rader på den ena sidan av en yttre koppling inte har någon motsvarighet från den andra tabellen, kommer vissa av fälten som returneras i frågeresultatet från den andra tabellen att vara tomma när raderna inte har någon motsvarighet.

Hur använder jag en yttre koppling?

Du skapar en yttre koppling genom att ändra en befintlig inre koppling Om det inte finns någon inre koppling skapar du en och ändrar den sedan till en yttre koppling.

Ändra en inre koppling till en yttre koppling

  1. Dubbelklicka i frågans designvy på den koppling som du vill ändra.

    Dialogrutan Kopplingsegenskaper visas.

  2. Observera alternativen som visas bredvid alternativ 2 och alternativ 3 i dialogrutan Kopplingsegenskaper.

  3. Klicka på det alternativ som du vill använda och sedan på OK.

  4. Kopplingen visas tillsammans med en pil som pekar från datakällan där alla rader inkluderas till datakällan där enbart de rader som uppfyller kopplingsvillkoret tas med.

Tvetydiga yttre kopplingar

Om du skapar en fråga som innehåller en LEFT JOIN och en inre koppling Access kanske inte kan avgöra vilken ansluta till åtgärden ska utföras först. Eftersom resultatet är olika beroende på om den vänstra eller inre koppling utförs först, visas ett felmeddelande:

Om du vill åtgärda det här felet kan ändra du frågan så att det är helt klart vilken koppling som ska utföras först.

SQL-syntax för en yttre koppling

Yttre kopplingar anges i SQL i instruktionen FROM, vilket visas nedan:

FROM tabell1 [vänster | RÄTT] JOIN tabell2
tabell1.fält1 jämför Tabell2.fält2

Åtgärderna KOPPLA VÄNSTER och KOPPLA HÖGER består av följande element:

Element

Beskrivning

tabell1, tabell2

Namnen på de tabeller som innehåller de poster som ska kombineras.

fält1, fält2

Namnen på de fält som ska kombineras. Fälten måste ha samma datatyp och innehålla samma typ av data, men de behöver inte ha samma namn.

jämföra

En jämförelseoperator: "=," "<," ">," "<=," ">=" eller "<>."

Mer information om syntaxen för yttre kopplingar finns i avsnittet LEFT JOIN, höger kopplingsåtgärder.

Överst på sidan

Visa alla rader från båda tabellerna och ansluta till där det finns ett gemensamt värde

När du vill visa alla rader från två tabeller och ansluta till dem baserat på vanliga värden kan använda du en full yttre koppling. Full yttre kopplingar stöds inte uttryckligen i Access, men du kan åstadkomma samma resultat genom att använda en unionsfråga. I följande procedur beskrivs hur du gör detta, men om du vill ha mer information om unionsfrågor, finns i avsnittet Se även.

Du använder en unionsfråga för att utföra en full yttre koppling:

  1. Skapa en fråga som har en vänsterbaserad yttre koppling på fältet du vill använda för en full yttre koppling.

  2. Klicka på Visa i gruppen Vyer på fliken Start och sedan på SQL-vy.

  3. Tryck på CTRL+C för att kopiera SQL-koden.

  4. Ta bort semikolon i slutet av FROM-satsen och tryck sedan på RETUR.

  5. Skriv UNION och tryck sedan på RETUR.

    Obs!: Använd inte ALL-nyckelordet när du använder en unionsfråga för att utföra en full yttre koppling.

  6. Tryck på CTRL+V för att klistra in SQL-koden som du kopierade i steg 3.

  7. Ändra LEFT JOIN till RIGHT JOINi den kod du klistrade in.

  8. Ta bort semikolon i slutet av andra FROM-satsen och tryck sedan på RETUR.

  9. Lägg till en WHERE-sats som anger att värdet för det kopplade fältet är NULL i första tabellen som listas i FROM-satsen (vänster tabellen).

    Om FROM-satsen exempelvis är följande:

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

    Skulle du lägga till följande WHERE-sats:

    WHERE Products.ID IS NULL

  10. Skriv ett semikolon (;) i slutet av WHERE-satsen för att indikera slutet av unionsfrågan.

  11. Klicka på Kör i gruppen Resultat på fliken Design.

Korskopplingar

Kors kopplingar skiljer sig från inre och yttre kopplingar eftersom de inte uttryckligen representeras i Access. I en korskoppling kombineras varje rad från en tabell med varje rad från en annan tabell, vilket resulterar i något som kallas en korsprodukt eller en Kartesiansk produkt. När du kör en fråga som innehåller tabeller som inte är explicit kopplade, är en korsprodukt resultatet. Kors kopplingar är vanligtvis oavsiktlig, men det finns fall där de kan vara användbara.

Varför ska jag använda en korskoppling?

Om du vill granska alla möjliga kombinationer av rader mellan två tabeller eller frågor kan du använda en korskoppling. Anta att ditt företag har fått ett fantastiskt år och du funderar ger avdrag till dina kunder. Du kan skapa en fråga som summerar varje kund inköp, skapar en liten tabell som innehåller flera möjliga rabatt procenttal och kombinera två i en annan fråga som utför en korskoppling. Du får en fråga som visar en uppsättning hypotetiska avdrag för varje kund.

Hur använder jag en korskoppling?

En korskoppling produceras helst du inkludera tabeller eller frågor i frågan och inte skapa minst en explicit koppling för varje tabell eller fråga. Varje rad från varje tabell eller fråga som inte är ansluten till en annan tabell eller fråga till varannan rad i resultatet uttryckligen kombineras. Anta rabatt från föregående stycke. Förutsätts det att du har 91 kunder och att du vill titta på fem möjliga rabatt procenttal. Din korskoppling ger 455 rader (produkten av 91 och 5).

Som du kan förstå kan oavsiktlig kors kopplingar skapa mängder av raderna i frågeresultaten. Dessutom är dessa resultat vanligtvis meningslös, eftersom om du inte faktiskt har för avsikt att kombinera varje rad med varannan rad, delen av de kombinerade rader som ska visas i resultatet inte är begripliga. Slutligen kan frågor som använder oavsiktlig kors kopplingar ta väldigt lång tid att köra.

Oavsiktlig korskoppling i designvyn
En oavsiktlig publiceringsfunktioner gå med i designvyn.

1. på inringade fält ska kopplas till varandra.

Oavsiktlig korsprodukt
Korsprodukt som returneras av oavsiktlig korskoppling som beskrivs ovan.

1. anteckning mycket stora antalet poster.

Det korrigerade frågeresultatet
Resultat efter att korrekt koppling skapas.

1. Observera att antalet poster är mycket mindre.

Överst på sidan

Koppla tabeller baserat på olika fältvärden

Kopplingar behöver inte baseras på samma värde i de kopplade fälten. En koppling kan baseras på en jämförelseoperator, till exempel större än (>), mindre än (<) eller inte lika med (<>). Kopplingar som inte baseras på lika värden kallas för kopplingar mellan värden som inte är exakt lika.

Om du vill kombinera raderna i två datakällor som baseras på fältvärden som inte är lika, ska du använda en sådan här koppling. Kopplingar mellan värden som inte är exakt lika baseras vanligtvis på jämförelseoperatorerna större än (>), mindre än (<), större än eller lika med (>=) eller mindre än eller lika med (<=). Kopplingar som operatorn inte lika med (<>) kan returnera nästan lika många rader som korskopplingar och resultatet blir då svårt att analysera.

Hur använder jag kopplingar mellan värden som inte är exakt lika?

Kopplingar stöds inte i designvyn. Om du vill använda dem, måste du göra det med hjälp av SQL-vy. Men du kan skapa en koppling i designvyn, växla till SQL-vy, söka efter likhetstecknet (=) jämförelseoperator och ändra det till operatorn du vill använda. När du gör detta, kan du bara öppna frågan i designvyn igen om du första ändra jämförelseoperatorn tillbaka till är lika med (=) i SQL-vyn.

Ta bort en koppling

Om en oönskad koppling skapas automatiskt i Access eller om du skapar en koppling av misstag, t.ex. en koppling mellan två fält som inte har samma datatyper, kan du ta bort kopplingen.

  1. Klicka i frågerutnätet på kopplingen som du vill ta bort.

  2. Tryck på Ta bort.

eller

  • Högerklicka på kopplingen som du vill ta bort i frågerutnätet, och klicka sedan på Ta bort.

Överst på sidan

Obs!: Ansvarsfriskrivning för maskinöversättning: Den här artikeln har översatts av ett datorsystem utan mänsklig inblandning. Microsoft erbjuder dessa maskinöversättningar för att hjälpa icke engelskspråkiga användare att ta del av information om Microsofts produkter, tjänster och tekniker. Eftersom artikeln är maskinöversatt kan den innehålla fel i ordval, syntax och grammatik.

Mer information finns i

Lägga till poster i en tabell med hjälp av en tilläggsfråga

Kombinera resultaten av flera urvalsfrågor genom att använda en unionsfråga

Skapa en fråga som baseras på flera tabeller

Skapa, redigera eller ta bort en relation

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Office Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×