Koppla tabeller och frågor

Koppla tabeller och frågor

När du tar med flera datakällor i en Access-fråga använder du kopplingar för att begränsa de poster som 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 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. Den här artikeln innehåller grundläggande information om tabellrelationer, inklusive hur du skapar en.

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

Artikelinnehåll

Översikt

En databas är en samling tabeller med data som har logiska relationer till varandra. Du använder relationer för att koppla ihop tabeller med fält som de har gemensamt. En tabell kan ingå i hur många relationer som helst, 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 Access skapar kopplingar som baseras på relationer som har definierats mellan tabellerna. Du kan skapa kopplingar manuellt 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 alla tabeller som du använder som datakällor.

Kopplingar fungerar på liknande sätt som frågevillkor på så sätt att de skapar regler som innebär att data måste matcha för att inkluderas i frågeåtgärderna. Till skillnad från villkor anger kopplingar också att varje par rader som uppfyller kopplingsvillkoren kombineras i postuppsättningen för att skapa en enda rad.

Det finns fyra grundläggande typer av kopplingar: inre kopplingar, yttre kopplingar, korskopplingar och kopplingar som inte är lika. I den här artikeln beskrivs alla typer av kopplingar du kan använda, varför du använder varje typ och hur du skapar kopplingar.

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

Rutan Kopplingsegenskaper.

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

Kopplingar är ibland riktade. Det här området i dialogrutan visar vilken tabell som är vilken i join och vilka fält som används för att koppla tabellerna.

Detta område bestämmer typen av koppling: 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 var och en. I en inre koppling ingår inga andra data. I en yttre koppling inkluderas orelaterade poster från en tabell också i frågeresultaten.

Överst på sidan

Typer av kopplingar

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

Inre kopplingar: bara relaterade data från båda tabellerna kombinerade

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 och inte anger vilken typ av koppling det är förutsätter Access att du vill ha en inre koppling. Inre kopplingar är användbara eftersom de gör att du kan kombinera data från två källor baserat på delade värden – så att du bara ser data när det finns en fullständig bild.

Yttre kopplingar: alla relaterade data kombineras korrekt, 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 riktade: en vänster yttre koppling innehåller alla poster från den vänstra tabellen – den första tabellen i join – och en höger yttre koppling innehåller alla poster från den högra tabellen – den andra tabellen i join.

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

I vissa system kan en yttre koppling inkludera alla rader från båda tabellerna, med rader kombinerade när de motsvarar. Detta kallas för en fullständig yttre koppling och Access stöder inte uttryckligen dem. Du kan emellertid använda en korskoppling och villkor för att uppnå samma effekt.

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

För det mesta är en korskoppling en sidoeffekt av att lägga till två tabeller i en fråga och sedan glömma att gå med i dem. Access tolkar det här som att du vill se alla poster från en tabell kombinerat med varje post från den andra tabellen – varje möjlig kombination 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 korskoppling bara är vad du behöver.

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

Kopplingar mellan värden som inte är lika använder en annan operator än likhetstecknet (=) för att jämföra värden och avgöra om och hur data ska kombineras. Kopplingar mellan olika delar 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 sammanfogade tabellerna

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

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

Hur använder jag en inre koppling?

Oftast behöver du inte göra något för att använda en inre koppling. Om tabellerna som du lägger till i en fråga redan har relationer, skapas automatiskt en inre koppling mellan varje par av relaterade tabeller i Access 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 relationer skapas inre kopplingar automatiskt i Access om du lägger till två tabeller i en fråga och båda tabellerna har ett fält med samma eller kompatibla datatyper och ett av kopplingsfälten är ett primärnyckel. Symbolerna "ett" 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 tabell1 INNER JOIN tabell2 ON tabell1.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 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ör

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

Mer information om inre kopplingssyntax finns i avsnittet OM INRE KOPPLING.

Överst på sidan

Visa alla rader från en tabell och motsvarande rader från den andra tabellen

Yttre kopplingar talar om för en fråga att även om vissa rader på båda sidor av kopplingskopplingen motsvarar exakt så ska frågan innehålla 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 koppling.

Yttre kopplingar kan vara vänster yttre kopplingar eller vara höger yttre kopplingar. I en vänster yttre koppling tar frågan med alla rader från den första tabellen i SQL-instruktionen FROM-satsen, 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-instruktionen FROM-satsen, 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 se vilken tabell som är den vänstra eller högra tabellen i en viss koppling genom att dubbelklicka på koppling och sedan titta i dialogrutan Kopplingsegenskaper. Du kan också växla till SQL-vyn och sedan undersöka FROM-satsen.

Eftersom vissa rader på ena sidan av en yttre koppling inte har motsvarande rader från den andra tabellen blir några av de fält som returneras i frågan från den andra tabellen tomma när raderna inte stämmer överens.

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 på den koppling du vill ändra i frågedesignvyn.

    Dialogrutan Kopplingsegenskaper visas.

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

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

  4. Access visar koppling och visar en pil som pekar från datakällan där alla rader inkluderas i datakällan där endast 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 resultaten skiljer sig åt beroende på om den vänstra koppling eller inre koppling utförs först, visas ett felmeddelande:

För att korrigera det här felet måste du ändra frågan så att det är tydligt 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 | RIGHT ] JOIN table2
ON table1.field1 compare table2.field2

Å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ör

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

Mer information om yttre kopplingssyntax finns i avsnittet LEFT JOIN, RIGHT JOIN Operations.

Ö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 få samma effekt 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 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 sedan 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 för att klistra in DEN SQL-kod som du kopierade i steg 3.

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

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

  9. Lägg till en WHERE-sats som anger att värdet i kopplingsfältet är NULL i den första tabellen som visas 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]

    Lägg 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

Korskopplingar skiljer sig från inre och yttre kopplingar på så sätt att 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 vad som kallas en korsprodukt eller en kartesiansk produkt. Varje gång du kör en fråga som har tabeller som inte uttryckligen är sammanfogade 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 korskoppling?

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 spektakulärt år och du överväger att ge rabatter till dina kunder. Du kan skapa en fråga som summerar varje kunds köp, skapa en liten tabell med 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 rabattrabatter för varje kund.

Hur använder jag en korskoppling?

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

Som du kanske förstår kan oavsiktliga sammankopplingar skapa ett stort antal rader i frågeresultatet. Resultaten är dessutom i allmänhet helt meningslösa, eftersom de flesta av de kombinerade raderna som visas i resultatet inte blir meningsfulla om du inte tänker kombinera varje rad med varannan rad. Slutligen kan det ta mycket lång tid att köra frågor som använder oavsiktliga korskopplingar.

Oavsiktlig korskoppling i designvyn

1. De inringade fälten ska vara sammanfogade med 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å en anamn av fältvärden

Kopplingar behöver inte baseras på likvärdiga i de samman sammanfogade fälten. En koppling kan baseras på alla jämförelseoperatorerna, till exempel större än (>), mindre än (<) eller inte är lika med (<>). Kopplingar som inte är baserade på likvärdiga kallas för kopplingar som inte är lika.

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 lika. Vanligtvis är kopplingar som inte är lika baserade på antingen större än (>), mindre än (<), större än eller lika med (>= ),eller mindre än eller lika med (< =) jämförelseoperatorer. Kopplingar som inte är lika med operatorn (<>) kan returnera nästan lika många rader som korskopplingar, och resultatet kan vara svårt att tolka.

Hur använder jag en koppling som inte är exakt lika?

Kopplingar som inte är lika stöds inte i designvyn. Om du vill använda dem måste du göra det i SQL-vyn. Du kan emellertid skapa en koppling i designvyn, växla till SQL-vyn, hitta likhetsoperatorn(=)och ändra den till den operator som du vill använda. När du har gjort det kan du bara öppna frågan i designvyn igen om du först ändrar jämförelseoperatorn tillbaka 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 koppling.

  1. Klicka på den koppling du vill ta bort i frågerutnätet.

  2. Tryck på DELETE.

- eller -

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

Överst på sidan

Mer information finns i

Lägga till poster

Skapa,

Behöver du mer hjälp?

Utöka dina Office-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.

×