Administrer data med forespørgsler

Forespørgsel om ikke-relaterede datakilder

Din browser understøtter ikke video. Installer Microsoft Silverlight, Adobe Flash Player eller Internet Explorer 9.

Nogle gange skal du oprette en forespørgsel for at få oplysninger fra datakilder, som ikke har en direkte relation (en til en eller en til mange).

Brug mellemliggende tabeller til at oprette forbindelse mellem datakilder i forespørgsler

Når du kører en forespørgsel, bruger Access de relationer, du har oprettet mellem tabeller. Access udleder og opretter forbindelser mellem andre datakilder. Hvis den relation du har brug for i en forespørgsel ikke eksisterer, kan du forbinde tabellerne som en del af den forespørgsel.

Antag, at du gerne vil se, hvor mange ordrer du har modtaget for produkter fra forskellige leverandører. Din tabel Leverandører er ikke forbundet med din tabel Indkøbsordredetaljer, som indeholder oplysninger om produkt-id’er og antal. Men tabellen Indkøbsordrer er forbundet med tabellen Indkøbsordredetaljer.

Flere tabeldatakilder med og uden foruddefinerede relationer.

Tip: Hvis du skal bruge denne relation uden for den forespørgsel, du opretter, er det bedst at oprette en mellemliggende relation til senere brug. Hvis du vil se hvordan, skal du se Opret mange til mange-relationer.

Hvis du ikke vil oprette den mellemliggende tabel i databasen, kan du bruge tabellen Indkøbsordrer som den mellemliggende tabel i forespørgslen. Tilføj tabellen Leverandører til venstre for tabellen Indkøbsordrer og opret en forbindelse.

Brug af én tabel til, indirekte, at forbinde to andre tabeller

Tabellen Indkøbsordrer forbinder de to uensartede tabeller; Leverandører og Indkøbsordredetaljer. Forbind tabellerne ved hjælp af felter, (som id i tabellen Leverandør og leverandør-id i tabellen Indkøbsordrer) der opfylder følgende kriterier:

  • De to felter har matchende eller kompatible datatyper. Du kan for eksempel ikke forbinde et tekstfelt til et talfelt.

  • Felterne identificerer matchende, entydige poster i hver tabel. Du ville for eksempel ikke forbinde to felter med efternavne, da efternavne ikke altid er unikke.

  • Felterne sikrer det korrekte postresultat. Hvis du for eksempel forbinder Leverandør-id med Indkøbs-id, så får du måske nogles matches, hvis der er ens id. Men det vil ikke give nogen mening, da Leverandør-id ikke har noget at gøre med Indkøbs-id. Et bedre valg er at oprette forbindelse mellem id fra tabellen Leverandør og tabellen Indkøbsordrer – de returnerede poster giver mening, fordi begge felter identificerer leverandøren.

Trin

Uanset om du har en mellemliggende tabel i databasen, eller blot planlægger at bruge en i din forespørgsel, skal du følge disse trin:

  1. Tilføj den mellemliggende tabel til forespørgslen mellem de to uforbundne tabeller.

  2. Opret alle nødvendige forbindelser til den mellemliggende tabel.

    Forbindelser kan bruge alle relevante former for joinforbindelser, men de skal være forbundet med felter, der opfylder de kriterier, der er beskrevet tidligere i dette modul.

    Oprettelse af nødvendige forbindelser med den mellemliggende tabel
  3. Fuldfør forespørgslen

    Følg de sædvanlige trin for at oprette en forespørgsel: tilføj outputfelter, tilføj kriterier og kør eller gem din forespørgsel. Hvis du vil se hvordan, skal du se Opret grundlæggende forespørgsler.

    Bemærk: Du behøver ikke at medtage den mellemliggende tabel i dine resultater. Den skal bare være en del af forespørgslens datakilder, så Access kan forbinde data.

Vil du have mere?

Opret grundlæggende forespørgsler

Opret forespørgsler ved at sammenkæde mere end én datakilde

Opret forespørgsler med ydre joinforbindelser

Kursus i Excel

Kursus i Outlook

Nogle gange har du brug for at forespørge i tabeller eller andre datakilder, der ikke er relaterede, og som ikke deler en joinforbindelse. Du har to muligheder for at gøre dette.

Du kan bruge en midlertidig tabel, det vil sige en tabel, der deler joinforbindelser med de datakilder, du vil bruge.

Eller du kan tilføje en joinforbindelse.

Lad os starte med den midlertidige tabel. I dette databaseeksempel skal medarbejdere angive en status for hver ordre, men det glemmer de nogle gange.

Det spørgsmål, du gerne vil have svar på, er så: "Hvilke ordrer har ikke en status, og hvilke medarbejdere glemte at angive dem?"

På overfladen ser det ud til, at vi er nødt til at bruge tre tabeller i forespørgslen: Medarbejdere, ordrer og status for ordrespecifikationer, da de svarer til datapunkterne i vores spørgsmål: "Hvilke ordrer har ikke en status, og hvilke medarbejdere glemte at angive dem?"

Føj tabellerne til forespørgslen, og du kan se, at disse to tabeller ikke er sammenknyttet, men det er ok, er det ikke? Vi kan tilføje en joinforbindelse.

Vi sammenknytter id-felterne, kører forespørgslerne, og ... intet sker.

Nu gør vi det, vi skulle have gjort i første omgang, og kigger på relationen mellem tabellerne.

Når vi gør det, ser vi det, der ligner en kæde af relationer: Medarbejdere-til-ordrer, ordrer-til-ordrespecifikationer og ordrespecifikationer-til-ordrespecifikationsstatus.

Ordrer og Ordrespecifikationsstatus er ikke relaterede, men Ordrespecifikationer er relateret til dem begge. Det gør Ordrespecifikationer til vores mellemliggende tabel.

Endvidere fører det til en regel: Så længe de midlertidige tabeller er en del af datakilden, kan du forespørge i disse underliggende tabeller og få et gyldigt resultat.

Du behøver ikke inkludere den midlertidige tabel i dine resultater, men den skal være en del af din forespørgsels datakilde.

Vi tilføjer Ordrespecifikationer til forespørgslen, … bevarer felterne, … og kører forespørgslen.

Vi filtrerer for tomme værdier, … og her er vores svar.

Lad os nu tilføje en joinforbindelse til en forespørgsel. For at gøre dette skal du huske nogle flere regler.

For det første skal de tabeller eller forespørgsler, du vil sammenknytte, have felter med datatyper, der matcher eller er kompatible.

Datatyperne Tal og Valuta er f.eks. kompatible, men Tal og Tekst er ikke.

For det andet findes den oprettede joinforbindelse kun i din forespørgsel. Du opretter ikke en tabelrelation her.

Og for det tredje skal resultaterne give mening. Hvis joinforbindelsen f.eks. returnerer data vedrørende ordrer og firmabiler, skal du nok starte forfra.

Antag, at vi vil vide, hvilke kunder der har bestilt hvilke produkter.

Vi føjer Kunder, Ordrer og Ordrespecifikationer til en ny forespørgsel. Nu tilføjer vi joinforbindelsen. Vi trækker kunde-id fra tabellen Kunder til det matchende felt i tabellen Ordrer.

Her er joinlinjen, og vi har nu en anden regel: Access placerer det felt, du trækker, i venstre side af nye den joinforbindelse. Hvis dette ikke er det, du ønsker, skal du markere joinlinjen, trykke på Delete-tasten og starte forfra.

Nu, hvor vi har styr på dette, kan vi oprette forespørgslen. Nu tilføjer vi fornavn og efternavn fra Kunder, herefter produkt-id, … ordre-id, … mængde, … og enhedspris fra Ordrespecifikationer.

Vi kører forespørgslen, og her er vores data.

Nu kender du de to teknikker, du kan bruge, når du vil forespørge i ikke-relaterede datakilder: brug en midlertidig tabel, eller tilføj en joinforbindelse, og svarene på dine dataspørgsmål vises.

Var disse oplysninger nyttige?

Fantastisk! Har du mere feedback?

Hvordan kan vi forbedre det?

Tak for din feedback!

×