Koppla tabeller och frågor

Gäller för
Access för Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

I den här artikeln beskrivs de olika typerna av kopplingar och hur du använder dem i en fråga. Som standard skapas en koppling automatiskt om det redan finns en relation mellan två datakällor som du använder i en fråga. En koppling skapas också om det finns fält som tydligt motsvarar varandra. Du kan ta bort en automatiskt skapad koppling. I den här artikeln finns grundläggande information om tabellrelationer, bland annat hur du skapar en.

Obs

Du kan koppla frågor på samma sätt som du kopplar tabeller, och du kan också koppla båda.

Den här artikeln innehåller följande avsnitt

Översikt

En databas är en samling tabeller med data som har logiska relationer till varandra. Du använder relationer för att koppla tabeller med hjälp av fält som de har gemensamt. En tabell kan vara en del av ett obegränsat antal relationer, men varje relation har alltid exakt två tabeller. I en fråga representeras en relation av en koppling.

När du lägger till tabeller i en fråga skapar 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 definierats. Om du använder andra frågor (i stället för eller utöver tabeller) som datakällor för en fråga kan du skapa kopplingar mellan källfrågorna och även mellan dessa frågor och tabeller som du använder som datakällor.

Kopplingar fungerar på liknande sätt som frågevillkor i det att de fastställer regler som data måste matcha för att tas med i frågeåtgärderna. Till skillnad från villkor anger kopplingar också att varje radpar som uppfyller kopplingsvillkoren kombineras i postmängden till en enda rad.

Det finns fyra grundläggande typer av kopplingar: inre kopplingar, yttre kopplingar, korskopplingar och kopplingar mellan värden som inte är exakt likadana. I den här artikeln går vi igenom de olika typerna av kopplingar du kan använda, varför du använder dem och hur du skapar kopplingarna.

Kopplingar är till frågor om vad relationer är till tabeller: en indikation på hur data i två källor kan kombineras baserat på datavärden de har gemensamt. Här är en bild av en koppling i designvyn för frågan, med kopplingens egenskaper öppna i en dialogruta:

Rutan Kopplingsegenskaper.

Den här linjen mellan tabellerna representerar kopplingen. Dubbelklicka på en koppling för att öppna dialogrutan Kopplingsegenskaper (visas) och granska eller ändra kopplingen.

Kopplingar är ibland riktade. 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 avgör kopplingstypen: alternativ 1 är en inre koppling, 2 är en vänster yttre koppling och 3 är en höger yttre koppling.

Fält från båda tabellerna kan användas, och data som gäller för en viss aktivitet visas från respektive tabell. I en inre koppling inkluderas inga andra data. I en yttre koppling inkluderas även orelaterade poster från en tabell i frågeresultaten.

Överst på sidan

Typer av kopplingar

Det finns fyra grundläggande typer av kopplingar: inre kopplingar, yttre kopplingar, korskopplingar och kopplingar mellan värden som inte är exakt likadana. Korskopplingar och kopplingar mellan värden som inte är exakt är avancerade kopplingstyper och används sällan, men du bör känna till dem så att du har en fullständig förståelse för hur kopplingar fungerar.

En inre koppling är en koppling där Access bara tar med data från en tabell om det finns motsvarande data i den relaterade tabellen, och tvärtom. Oftast använder du inre kopplingar. När du skapar en koppling utan att ange vilken typ av koppling det är, förutsätter Access att du vill ha en inre koppling. Inre kopplingar är användbara eftersom de låter dig kombinera data från två källor baserat på gemensamma värden, så att du bara ser data när det finns en fullständig bild.

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

Fullständiga yttre kopplingar: alla data, kombinerade där det är möjligt

I vissa system kan en yttre koppling innefatta alla rader från båda tabellerna, där rader kombineras när de motsvarar. Det här kallas för en fullständig yttre koppling och Access stöder dem inte uttryckligen. Du kan dock använda en korskoppling och villkor för att uppnå samma effekt.

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

En korskoppling är oftast en bieffekt av att lägga till två tabeller i en fråga och sedan glömma att koppla dem. Access tolkar det som att du vill se alla poster från en tabell tillsammans med alla poster från en annan tabell – alla möjliga kombinationer av poster. Eftersom inga data kan kombineras, ger den här typen av koppling sällan användbara resultat. Men det finns några fall när en tvärkoppling är precis vad du behöver.

Kopplingar som inte är exakt lika: som en vanlig koppling, men med en annan jämförelse för att kombinera rader

För kopplingar som inte är exakt 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 stöds inte uttryckligen, men du kan använda en korskoppling och villkor för att uppnå samma effekt.

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

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

Inre kopplingar är den vanligaste typen av koppling. De talar om för en fråga att rader från en av de kopplade tabellerna motsvarar rader i den andra tabellen, baserat på data i de kopplade fälten. När du kör en fråga med en inre koppling inkluderas bara de rader där det finns ett gemensamt värde i båda de kopplade tabellerna i frågeåtgärderna.

Hur gör jag för att använda en inre koppling?

Oftast behöver du inte göra något för att använda en inre koppling. Om det redan finns relationer mellan tabellerna som du lägger till i en fråga skapar Access automatiskt en inre koppling mellan varje par av 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 1:N-relation, och ett oändlighetstecken (∞) som anger vilken tabell som finns på N-sidan.

Även om du inte har skapat relationer så skapar Access automatiskt inre kopplingar om du lägger till två tabeller i en fråga och de tabellerna har varsitt fält med samma eller kompatibel datatyp och ett av kopplingsfälten är en primärnyckel. Symbolerna "en" och "många" visas inte i det här fallet, eftersom referensintegritet inte tillämpas.

Om du lägger till frågor i frågan, utan att skapa 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älten för att visa att en koppling har skapats.

SQL-syntax för en inre koppling

Inre kopplingar anges i SQL i FROM-satsen, enligt nedan:

FROM table1 INNER JOIN table2 ON table1. fält1 jämför 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 kopplas. Om fälten inte är numeriska måste de ha samma datatyp och innehålla samma typ av data, men de behöver inte ha samma namn.
jämför Valfri jämförelseoperator: "=", "<," "><=", ">=" eller "."<>

Mer information om syntax för inre koppling finns i avsnittet INNER JOIN-åtgärd.

Överst på sidan

Visa alla rader i en tabell och motsvarande rader i den andra tabellen

Yttre kopplingar anger för en fråga att även om några av raderna på båda sidorna om kopplingen överensstämmer exakt, bör frågan inkludera alla rader från en tabell och även de rader från den andra tabellen som har ett gemensamt värde på båda sidor om kopplingen.

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

Obs

Du kan enkelt avgöra vilken tabell som är den vänstra eller högra tabellen i en viss koppling genom att dubbelklicka på kopplingen och sedan titta i dialogrutan Kopplingsegenskaper . Du kan också växla till SQL-vyn och sedan undersöka FROM-satsen.

Eftersom vissa av raderna på ena sidan av en yttre koppling saknar motsvarande rader 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 motsvarar.

Hur gör jag för att använder 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 på kopplingen du vill ändra i frågedesignvyn.
    Dialogrutan Kopplingsegenskaper visas.
  2. Lägg märke till alternativen bredvid alternativ 2och 3 i dialogrutan Kopplingsegenskaper.
  3. Klicka på det alternativ som du vill använda och sedan på OK.
  4. Access visar kopplingen och en pil som pekar från datakällan där alla rader inkluderas till datakällan där bara de rader som uppfyller kopplingsvillkoret inkluderas.

Tvetydiga yttre kopplingar

Om du skapar en fråga som innehåller en LEFT JOIN och en INNER JOIN kanske Access inte kan avgöra vilken kopplingsåtgärd som ska utföras först. Eftersom resultatet skiljer sig åt beroende på om den vänstra kopplingen eller den inre kopplingen utförs först, visas ett felmeddelande i Access:

För att rätta till det här felet måste du ändra frågan så att det tydligt framgår vilken koppling som ska utföras först.

SQL-syntax för en yttre koppling

Yttre kopplingar anges i SQL i FROM-satsen, enligt nedan:

FROM table1 [ LEFT | HÖGER ] KOPPLA tabell2
ON 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 kopplas. Fälten måste ha samma datatyp och innehålla samma typ av data, men de behöver inte ha samma namn.
jämför Valfri jämförelseoperator: "=", "<," "><=", ">=" eller "."<>

Mer information om syntaxen för yttre kopplingar finns i avsnittet Koppla vänster och KOPPLA HÖGER.

Överst på sidan

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

När du vill visa alla rader från två tabeller och koppla dem baserat på gemensamma värden, använder du en fullständig yttre koppling. Access stöder inte uttryckligen fullständiga yttre kopplingar, men du kan uppnå samma effekt genom att använda en unionsfråga. I följande procedur förklaras hur du gör detta, men om du vill ha mer information om unionsfrågor kan du läsa avsnittet Se även .

Så här använder du en unionsfråga för att utföra en fullständig yttre koppling:

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

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

  3. Kopiera SQL-koden genom att trycka på CTRL+C.

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

  5. Skriv UNION och tryck sedan på RETUR.

    Obs

    Använd inte nyckelordet ALL när du använder en unionsfråga för att utföra en fullständig yttre koppling.

  6. Tryck på CTRL+V om du vill klistra in den SQL-kod du kopierade i steg 3.

  7. I koden som du klistrade in ändrar du LEFT JOIN till RIGHT JOIN.

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

  9. Lägg till en WHERE-sats som anger att värdet i join-fältet är NULL i den första tabellen som anges i FROM-satsen (den vänstra tabellen).
    Om FROM-satsen till exempel är:

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

    Du kan lägga till följande WHERE-sats:
    WHERE Products.ID IS NULL

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

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

Korskopplingar

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

Varför ska jag använda en tvärkoppling?

Om du vill undersöka alla möjliga kombinationer av rader mellan två tabeller eller frågor använder du en korskoppling. Anta till exempel att ditt företag har haft ett fantastiskt år och att du funderar på att ge rabatter till dina kunder. Du kan skapa en fråga som summerar varje kunds köp, skapa en liten tabell som har flera möjliga rabattprocent och kombinera de två i en annan fråga som utför en korskoppling. Du får en fråga som visar en uppsättning hypotetiska rabatter för varje kund.

Hur gör jag för att använda en tvärkoppling?

En korskoppling skapas varje gång du inkluderar tabeller eller frågor i frågan och inte skapar minst en explicit koppling för varje tabell eller fråga. Access kombinerar alla rader i alla tabeller eller frågor som inte uttryckligen kopplats till en annan tabell eller fråga med varannan rad i resultatet. Tänk dig rabattscenariot från föregående stycke. Anta att du har 91 kunder och att du vill titta på fem möjliga rabattprocenter. Din korskoppling ger 455 rader (produkten av 91 och 5).

Som du kanske kan föreställa dig kan oavsiktliga korskopplingar skapa ett stort antal rader i frågeresultaten. Dessutom är dessa resultat i allmänhet meningslösa, för om du inte tänker kombinera alla rader med varannan rad kommer de flesta av de kombinerade raderna i resultatet inte att fungera. Slutligen kan frågor som använder oavsiktliga korskopplingar ta mycket lång tid att köra.

Oavsiktlig korskoppling i designvyn 1. De inringade fälten ska kopplas till varandra.

Oavsiktlig korsprodukt 1. Observera det mycket stora antalet poster.

Det korrigerade frågeresultatet 1. Observera att antalet poster är mycket mindre.

Överst på sidan

Koppla tabeller baserat på olikhet mellan fältvärden

Kopplingar behöver inte baseras på likvärdiga kopplingsfält. En koppling kan baseras på en jämförelseoperator, till exempel större än (>), mindre än (<), eller inte lika med (<>). Kopplingar som inte är baserade på likvärdighet kallas kopplingar mellan värden som inte är exakt likvärdiga.

Om du vill kombinera raderna i två datakällor baserat på fältvärden som inte är lika, använder du en koppling som inte är exakt kopplad. Vanligtvis baseras kopplingar mellan värden som är större än (>), mindre än (), större än eller< lika med (>=), eller mindre än eller lika med (<=). Kopplingar mellan värden som inte är lika med (<>) kan returnera nästan lika många rader som korskopplingar och resultaten kan vara svåra att tolka.

Hur gör jag för att använda en ojämn koppling?

Kopplingar som inte är exakt definierade stöds inte i designvyn. Om du vill använda dem måste du göra det med hjälp av SQL-vyn. Däremot kan du skapa en koppling i designvyn, växla till SQL-vyn, hitta likhetsoperatorn (=) och ändra den till den operator du vill använda. När du har gjort detta kan du bara öppna frågan i designvyn igen om du först ändrar tillbaka jämförelseoperatorn till lika med (=) i SQL-vyn.

Ta bort en koppling

Om Access automatiskt skapar en koppling som du inte vill använda eller om du skapar en koppling av misstag, till exempel en koppling mellan två fält som har olika datatyper, kan du ta bort kopplingen.

  1. Klicka på kopplingen du vill ta bort i frågerutnätet.
  2. Tryck på Delete.

-eller-

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

Överst på sidan

Lägga till poster i en tabell med hjälp av en tilläggsfrågaKombinera resultaten för Select-frågor genom att använda en unionsfrågaSkapa en fråga som baseras på flera tabellerSkapa, redigera eller ta bort en relation