Opret en forespørgsel ud fra flere tabeller

Processen med at opbygge og bruge forespørgsler handler sommetider blot om at markere felter i en tabel, måske anvende nogle kriterier og derefter få vist resultaterne. Men hvad nu hvis – som det oftest er tilfældet – at de data, du skal bruge, er spredt ud over mere end én tabel? Heldigvis kan du oprette en forespørgsel, der kombinerer oplysninger fra flere kilder. I dette emne gennemgås nogle scenarier, hvor du trækker data fra mere end én tabel, og det vises, hvordan du gør det.

Hvad vil du foretage dig?

Bruge data fra en relateret tabel til at forbedre oplysningerne i din forespørgsel

Forbinde data i to tabeller ved hjælp af deres relationer med en tredje tabel

Få vist alle posterne fra to ensartede tabeller

Bruge data fra en relateret tabel til at forbedre oplysningerne i din forespørgsel

Du kan opleve tilfælde, hvor en forespørgsel, der er baseret på én tabel, giver dig de oplysninger, du har brug for, men hvor det ville gøre forespørgselsresultaterne endnu mere tydelige og nyttige, hvis du hentede data fra en anden tabel. Lad os antage, at du har en liste over medarbejder-id'er, der vises i forespørgselsresultaterne. Du finder ud af, at det ville være mere praktisk at få vist medarbejderens navn i resultaterne, men medarbejdernes navne findes i en anden tabel. Hvis du vil have, at medarbejdernes navne skal vises i forespørgselsresultaterne, skal du medtage begge tabeller i din forespørgsel.

Brug guiden Forespørgsel til at opbygge en forespørgsel ud fra en primær tabel og en relateret tabel

  1. Sørg for, at tabellerne har en defineret relation i Vinduet Relationer.

    Sådan gør du

    1. Klik på Relationer i gruppen Vis/skjul under fanen Databaseværktøjer.

    2. Klik på Vis alle relationer i gruppen Relationer under fanen Design.

    3. Identificer de tabeller, der skal have en defineret relation.

      • Hvis tabellerne er synlige i vinduet Relationer, skal du kontrollere, at der allerede er defineret en relation.

        En relation vises som en linje, der forbinder de to tabeller i et fælles felt. Du kan dobbeltklikke på en relationslinje for at se, hvilke felter i tabellerne, der er forbundet af relationen.

      • Hvis tabellerne ikke er synlige i vinduet Relationer, skal du tilføje dem.

        På fanen Design i gruppen Vis/skjul skal du klikke på Tabelnavne.

        Dobbeltklik på hver af de tabeller, du vil vise, og klik derefter på Luk.

    4. Hvis du ikke finder en relation mellem de to tabeller, kan du oprette en ved at trække et felt fra en af tabellerne til et felt i den anden tabel. De felter, hvor du opretter relationen mellem tabellerne, skal have identiske datatyper.

      Bemærk: Du kan oprette en relation mellem et felt i datatypen Autonummerering og et felt i datatypen Tal, hvis det pågældende felt har en feltstørrelse for et langt heltal. Dette vil ofte være tilfældet, når du opretter en en-til-mange-relation.

      Dialogboksen Rediger relationer åbnes.

    5. Klik på Opret for at oprette relationen.

      Hvis du vil have mere at vide om dine valgmuligheder, når du opretter en relation, skal du se artiklen Opret, rediger eller slet en relation.

    6. Luk vinduet Relationer.

  2. Klik på fanen Opret i gruppen Forespørgsler, og klik på guiden Forespørgsel. Bemærk, at hvis du bruger Access 2007, skal du på fanen Opret i gruppen Andet klikke på guiden Forespørgsel.

  3. Klik på Guiden Simpel forespørgsel i dialogboksen Ny forespørgsel, og klik derefter på OK.

  4. I kombinationsfeltet Tabeller/Forespørgsler skal du klikke på den tabel, der indeholder de grundlæggende oplysninger, du vil medtage i din forespørgsel.

  5. På listen Tilgængelige felter skal du klikke på det første felt, du vil medtage i forespørgslen, og derefter skal du klikke på knappen med den enkelte højrepil for at flytte feltet til listen Valgte felter. Gør det samme med hvert ekstra felt fra den pågældende tabel, som du vil medtage i din forespørgsel. Det kan være felter, du vil have returneret i forespørgselsresultaterne, eller felter, du vil bruge til at begrænse rækkerne i resultaterne ved at anvende kriterier.

  6. I kombinationsfeltet Tabeller/Forespørgsler skal du klikke på den tabel, der indeholder de relaterede data, du vil bruge til at forbedre dine forespørgselsresultater.

  7. Tilføj de felter, du vil bruge til at forbedre dine forespørgselsresultater, på listen Valgte felter, og klik derefter på Næste.

  8. Under Vil du have en detalje- eller opsummeringsforespørgsel? skal du klikke på enten Detalje eller Opsummering.

    Hvis du ikke vil have forespørgslen til at udføre nogen aggregeringsfunktioner (SUM, GNS, MIN, MAKS, TÆL, STDAFV eller VARIANS), skal du vælge en detaljeforespørgsel. Hvis du vil have forespørgslen til at udføre en aggregeringsfunktion, skal du vælge en opsummeringsforespørgsel. Når du har foretaget dit valg, skal du klikke på Næste.

  9. Klik på Udfør for at få vist resultaterne.

Et eksempel, der bruger Northwind-eksempeldatabasen

I det følgende eksempel bruges guiden Forespørgsel til at opbygge en forespørgsel, der viser en liste over ordrer, leveringsgebyret for hver ordre, samt navnet på den medarbejder, der har behandlet den enkelte ordre.

Bemærk: I dette eksempel vil vi foretage en ændring i Northwind-eksempeldatabasen. Det kan være en god ide at lave en sikkerhedskopi af Northwind-eksempeldatabasen og derefter følge dette eksempel ved hjælp af den pågældende sikkerhedskopi.

Brug guiden Forespørgsel til at opbygge forespørgslen

  1. Åbn Northwind-eksempeldatabasen. Luk logonformularen.

  2. Klik på fanen Opret i gruppen Forespørgsler, og klik på guiden Forespørgsel. Bemærk, at hvis du bruger Access 2007, skal du på fanen Opret i gruppen Andet klikke på guiden Forespørgsel.

  3. Klik på Guiden Simpel forespørgsel i dialogboksen Ny forespørgsel, og klik derefter på OK.

  4. I kombinationsfeltet Tabeller/Forespørgsler skal du klikke på Tabel: Ordrer.

  5. På listen Tilgængelige felter skal du dobbeltklikke på OrdreID for at flytte feltet til listen Valgte felter. Dobbeltklik på Forsendelsesgebyr for at flytte feltet til listen Valgte felter.

  6. I kombinationsfeltet Tabeller/Forespørgsler skal du klikke på Tabel: Medarbejdere.

  7. På listen Tilgængelige felter skal du dobbeltklikke på Fornavn for at flytte feltet til listen Valgte felter. Dobbeltklik på Efternavn for at flytte feltet til listen Valgte felter. Klik på Næste.

  8. Da du opretter en liste over alle ordrerne, giver det mening at vælge en detaljeforespørgsel. Hvis du sammenlægger forsendelsesgebyrer efter medarbejder eller udfører en anden aggregeringsfunktion, kan du bruge en opsummeringsforespørgsel. Klik på Detalje (viser hvert felt i hver post), og klik derefter på Næste.

  9. Klik på Udfør for at få vist resultaterne.

Forespørgslen returnerer en liste over ordrer, hver enkelt med sit forsendelsesgebyr samt for- og efternavn på den medarbejder, der har behandlet den.

Toppen af siden

Forbind data i to tabeller ved hjælp af deres relationer med en tredje tabel

Ofte er data i to tabeller relateret til hinanden via en tredje tabel. Det er normalt tilfældet, fordi dataene mellem de første to tabeller er relateret i en mange-til-mange-relationer. Det er ofte en god fremgangsmåde for databasedesign at opdele en mange-til-mange-relation mellem to tabeller i en en-til-mange-relation, der involverer tre tabeller. Det gør du ved at oprette en tredje tabel, der kaldes en samlingstabel eller en relationstabel, der har en primær nøgle og en fremmed nøgle for hver af de andre tabeller. Der oprettes derefter en en-til-mange-relation mellem hver fremmed nøgle i samlingstabellen og den tilsvarende primære nøgle for en af de andre tabeller. I sådanne tilfælde skal du medtage alle tre tabeller i forespørgslen, selvom du kun vil hente data fra to af dem.

Opret en udvælgelsesforespørgsel ved hjælp af tabeller med en mange til mange-relation

  1. Klik på Forespørgselsdesign i gruppen Forespørgsler under fanen Opret. Bemærk, at hvis du bruger Access 2007, skal du klikke på Forespørgselsdesign i gruppen Andet under fanen Opret.

    Dialogboksen Vis tabel åbnes.

  2. I dialogboksen Vis tabel skal du dobbeltklikke på de to tabeller, der indeholder de data, du vil medtage i forespørgslen, samt i den samlingstabel, der sammenkæder dem, og derefter skal du klikke på Luk.

    Alle tre tabeller vises i arbejdsområdet til forespørgselsdesign og er forbundet på de relevante felter.

  3. Dobbeltklik på hvert af de felter, du vil bruge dine forespørgselsresultater. Hvert felt vises derefter i forespørgslen designgitter.

  4. I forespørgselsdesigngitteret skal du bruge rækken Kriterier til at angive feltkriterier. Hvis du vil bruge et feltkriterium uden at vise feltet i forespørgselsresultaterne, skal du fjerne markeringen i afkrydsningsfeltet i rækken Vis for det pågældende felt.

  5. Hvis du vil sortere resultaterne baseret på værdierne i et felt i forespørgselsdesigngitteret, skal du klikke på Stigende eller Faldende (afhængigt af hvilken måde du vil sortere posterne på) i rækken Sortér for det pågældende felt.

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

    Access viser forespørgselsresultatet i dataarkvisning.

Et eksempel, der bruger Northwind-eksempeldatabasen

Bemærk: I dette eksempel vil vi foretage en ændring i Northwind-eksempeldatabasen. Det kan være en god ide at lave en sikkerhedskopi af Northwind-eksempeldatabasen og derefter følge dette eksempel ved hjælp af sikkerhedskopien.

Antag, at du har en ny salgsmulighed: En leverandør i Rio de Janeiro har fundet dit websted og vil muligvis gøre forretninger med dig. De opererer dog kun i Rio og i nærheden af São Paulo. De leverer alle kategorier af de fødevareprodukter, du formidler. Det er en ret stor virksomhed, og de vil gerne have forsikring for, at du kan give dem adgang til en potentiel omsætning, der vil være stor nok til, at det kan betale sig for dem: En omsætning på mindst 20.000,00 BRL årligt (omkring 25.000,00 DKK). Kan du forsyne dem med det marked, de har brug for?

De data, du skal bruge til at besvare dette spørgsmål, findes to forskellige steder: i tabellen Kunder og tabellen Ordredetaljer. Disse tabeller er sammenkædet med hinanden via tabellen Ordrer. Relationen mellem tabellerne er allerede blevet defineret. I tabellen Ordrer kan hver ordre kun have én kunde, som er relateret til tabellen Kunder i feltet KundeId. Hver post i tabellen Ordredetaljer er kun relateret til én række i tabellen Ordrer i feltet OrdreID. Derfor kan en given kunde have mange ordrer, som hver især har mange ordredetaljer.

I dette eksempel skal du oprette en krydstabuleringsforespørgsel, der viser den samlede årlige omsætning i byerne Rio de Janeiro og São Paulo.

Opbyg forespørgslen i Designvisning

  1. Åbn Northwind-databasen. Luk logonformularen.

  2. Klik på Forespørgselsdesign i gruppen Forespørgsler under fanen Opret. Bemærk, at hvis du bruger Access 2007, skal du klikke på Forespørgselsdesign i gruppen Andet under fanen Opret.

    Dialogboksen Vis tabel åbnes.

  3. I dialogboksen Vis tabel skal du dobbeltklikke på Kunder, Ordrer og Ordredetaljer, og derefter skal du klikke på Luk.

    Alle tre tabeller vises i arbejdsområdet til forespørgselsdesign.

  4. Dobbeltklik på feltet By i tabellen Kunder for at tilføje det i forespørgselsdesigngitteret.

  5. I forespørgselsdesigngitteret skal du skrive I ("Rio de Janeiro";"São Paulo") i rækken Kriterier i kolonnen By. Derved medtages kun de poster, hvor kunden er i en af disse to byer i forespørgslen.

  6. I tabellen Ordredetaljer skal du dobbeltklikke på felterne Forsendelsesdato og Enhedspris.

    Felterne tilføjes til forespørgselsgitteret.

  7. Vælg rækken Felt i kolonnen Forsendelsesdato i forespørgselsgitteret. Erstat [Forsendelsesdato] med År: Format([Forsendelsesdato];"åååå"). Dette opretter et feltalias, År, der gør det muligt udelukkende at bruge årstallet i værdien i feltet Forsendelsesdato.

  8. Vælg rækken Felt i kolonnen Enhedspris i forespørgselsgitteret. Erstat [Enhedspris] med Salg: [Ordredetaljer]. [Enhedspris]*[Antal]-[Ordredetaljer]. [Enhedspris]*[Antal]*[Rabat]. Dette opretter et feltalias, Salg, der beregner salget for hver post.

  9. Klik på Krydstabulering i gruppen Forespørgselstype under fanen Design.

    Der vises to nye rækker, Total og Krydstabulering, i forespørgselsgitteret.

  10. I kolonnen By i forespørgselsdesigngitteret skal du klikke på rækken Krydstabulering, og derefter skal du klikke på Rækkeoverskrift.

    Dette får værdier for by til at blive vist som rækkeoverskrifter (dvs. forespørgslen returnerer én række for hver by).

  11. I kolonnen År skal du klikke på rækken Krydstabulering, og derefter skal du klikke på Kolonneoverskrift.

    Dette får værdier for år til at blive vist som kolonneoverskrifter (dvs. forespørgslen returnerer én kolonne for hvert år).

  12. I kolonnen Salg skal du klikke på rækken Krydstabulering, og derefter skal du klikke på Værdi.

    Dette får værdier for salg til at blive vist i skæringspunktet mellem rækker og kolonner (dvs. forespørgslen returnerer én salgsværdi for hver kombination af by og år).

  13. I kolonnen Salg skal du klikke på rækken Totaler, og derefter skal du klikke på Sum.

    Dette får forespørgslen til at lægge værdierne i denne kolonne sammen.

    Du kan lade rækken Totaler for de to andre kolonner stå med standardværdien fra Gruppér efter, da du vil se hver værdi for disse kolonner og ikke sammenlagte aggregeringsværdier.

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

Du har nu en forespørgsel, der returnerer det samlede salg efter år i Rio de Janeiro og São Paulo.

Toppen af siden

Få vist alle posterne fra to ensartede tabeller

Sommetider har man brug for at kombinere data fra to tabeller, som er identiske i struktur, men hvor en af dem er placeret i en anden database. Overvej følgende scenarie.

Antag, at du er en databaseanalytiker, der arbejder med data for studerende. Du er ved at gå i gang med et datadelingsinitiativ mellem din skole og en anden skole, således at begge skoler kan forbedre deres pensumplaner. For nogle af de spørgsmål, du vil udforske, vil det være bedre at se på alle poster fra begge skoler samlet, i stedet for at se på hver skole separat.

Du kan importere den anden skoles data til nye tabeller i databasen, men så vil eventuelle ændringer i den anden skoles data blive afspejlet i din database. En bedre løsning ville være at oprette et link til den anden skoles tabeller og derefter oprette forespørgsler, der kombinerer dataene, når du kører dem. Du vil kunne analysere dataene som et enkelt sæt i stedet for at udføre to analyser og forsøge at fortolke dem, som om de var én samlet analyse.

Du skal bruge en foreningsforespørgsel for at få vist alle poster fra to tabeller med identisk struktur.

Foreningsforespørgsler kan ikke vises i Designvisning. Du opretter dem ved hjælp af SQL-kommandoer, som du angiver i en SQL-visning-objektfane.

Opret en foreningsforespørgsel ved hjælp af to tabeller

  1. Klik på Forespørgselsdesign i gruppen Forespørgsler under fanen Opret. Bemærk, at hvis du bruger Access 2007, skal du klikke på Forespørgselsdesign i gruppen Andet under fanen Opret.

    Der åbnes et nyt forespørgselsdesigngitter, og dialogboksen Vis tabel vises.

  2. I dialogboksen Vis tabel skal du klikke på Luk.

  3. Klik på Forening (Union) i gruppen Forespørgselstype under fanen Design.

    Forespørgslen skifter fra Designvisning til SQL-visning. På dette tidspunkt er fanen SQL-objekt tom.

  4. I SQL-visningen skal du skrive SELECT efterfulgt af en liste over felterne fra den første af de tabeller, du vil medtage i forespørgslen. Feltnavne skal være omsluttet af kantede parenteser og adskilt af semikolon. Tryk på Enter, når du er færdig med at skrive feltnavnene. Markøren flyttes én linje ned i SQL-visningen.

  5. Skriv FROM efterfulgt af navnet på den første af de tabeller, du vil medtage i forespørgslen. Tryk på Enter.

  6. Hvis du vil angive et kriterium for et felt fra den første tabel, skal du skrive WHERE efterfulgt af feltnavnet, en sammenligningsoperator (som regel et lighedstegn (=)) og kriteriet. Du kan tilføje flere kriterier i slutningen af WHERE-delsætningen ved hjælp af nøgleordet AND og den samme syntaks, der bruges til det første kriterium: f.eks. WHERE [ClassLevel]="100" og [CreditHours]>2. Når du er færdig med at angive kriterier, skal du trykke på ENTER.

  7. Skriv UNION, og tryk derefter på Enter.

  8. Skriv SELECT efterfulgt af en liste over felterne fra den anden tabel, du vil medtage i forespørgslen. Du skal medtage de samme felter fra denne tabel, som du medtog i den første tabel, og i samme rækkefølge. Feltnavne skal være omsluttet af kantede parenteser og adskilt af semikolon. Tryk på Enter, når du er færdig med at skrive feltnavnene.

  9. Skriv FROM efterfulgt af navnet på den anden tabel, du vil medtage i forespørgslen. Tryk på Enter.

  10. Hvis du vil, kan du tilføje en WHERE-delsætning, sådan som det er beskrevet på trin 6 i denne fremgangsmåde.

  11. Skriv et komma (,) for at angive slutningen af forespørgslen.

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

    Dine resultater vises i dataarkvisningen.

Toppen af siden

Se også

Forbind tabeller og forespørgsler

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.

×