Het kan gebeuren dat u records van een tabel alleen wilt bekijken als een andere tabel corresponderende records bevat waarin een of meer velden met overeenkomende gegevens staan. Misschien wilt u de werknemersrecords controleren van werknemers die minstens één order hebben verwerkt om te bepalen welke werknemers in aanmerking komen voor een bonus. Het is ook mogelijk dat u contactgegevens wilt weergeven voor klanten met dezelfde woonplaats als een werknemer, zodat u werknemers aan klanten kunt koppelen voor persoonlijke ontmoetingen.
Wanneer u twee tabellen wilt vergelijken en overeenkomende gegevens wilt zoeken, gaat u op een van de volgende twee manieren te werk:
-
Maak een query voor het samenvoegen van velden uit elke tabel waarin de betreffende velden corresponderende gegevens bevatten, hetzij door middel van een bestaande relatie, hetzij met een speciaal voor de query gemaakte join. Met deze methode wordt de query het snelst uitgevoerd, maar kunt u geen velden met verschillende gegevenstypen samenvoegen.
-
Maak een query waarmee velden met elkaar worden vergeleken door het ene veld als criterium voor een ander veld te gebruiken. Deze aanpak is over het algemeen trager dan het toepassen van joins omdat bij joins rijen worden weggelaten uit de resultaten van een query voordat de onderliggende tabellen worden gelezen, terwijl criteria worden toegepast op de resultaten van een query nadat de onderliggende tabellen zijn gelezen. U kunt echter een veld als veldcriterium gebruiken om velden te vergelijken met verschillende gegevenstypen, iets wat niet mogelijk is bij joins.
In dit artikel wordt beschreven hoe u twee tabellen vergelijkt om overeenkomende gegevens vast te stellen. Het artikel bevat voorbeeldgegevens die u kunt gebruiken met voorbeeldprocedures.
Wat wilt u doen?
Twee tabellen vergelijken met behulp van joins
Als u twee tabellen wilt vergelijken met behulp van joins, moet u een selectiequery maken die beide tabellen opneemt. Als er niet al een bestaande relatie is tussen de tabellen voor de velden die de overeenkomende gegevens bevatten, kunt u een join maken voor de velden die u wilt doorzoeken op overeenkomende gegevens. U mag zo veel joins maken als u wilt, maar elk paar gekoppelde velden moet van hetzelfde of een compatibel gegevenstype zijn.
Stel dat u een onderzoeker aan een onderwijsinstelling bent en u wilt zien welke invloed recente wijzigingen van het curriculum van de wiskundeafdeling hebben gehad op de cijfers van studenten. U bent dus met name geïnteresseerd in de cijfers van studenten met als hoofdvak Wiskunde. U hebt al een tabel met gegevens van de hoofdvakken van studenten en een tabel met inschrijvingsgegevens. Cijfergegevens zijn opgeslagen in de tabel Vakinschrijvingen, en hoofdvakgegevens voor studenten in de tabel Hoofdvakken studenten. Als u wilt zien hoe de cijfers van wiskundestudenten zijn veranderd sinds de recente wijzigingen in het curriculum, moet u kijken naar records uit de inschrijvingstabel die corresponderende records in de hoofdvakkentabel hebben.
Voorbeeldgegevens maken
In dit voorbeeld maakt u een query waarmee u vaststelt hoe recente wijzigingen in het curriculum van de afdeling Wiskunde de cijfers van wiskundestudenten hebben beïnvloed. U gebruikt de volgende twee voorbeeldtabellen: Hoofdvakken studenten en Vakinschrijvingen. Voeg deze twee voorbeeldtabellen Hoofdvakken studenten en Vakinschrijvingen toe aan een database.
Access biedt verschillende manieren om deze voorbeeldtabellen toe te voegen aan een database. U kunt de gegevens handmatig invoeren, u kunt elke tabel kopiëren naar een spreadsheetprogramma en vervolgens de werkbladen importeren in Access, of u kunt de gegevens in een teksteditor plakken, zoals Kladblok, en vervolgens de gegevens importeren uit de resulterende tekstbestanden.
In de stappen in deze sectie wordt uitgelegd hoe u gegevens handmatig in een leeg gegevensblad invoert en wordt ook uitgelegd hoe u de voorbeeldtabellen in Excel kopieert en vervolgens in Access importeert.
Hoofdvakken studenten
Student-id |
Jaar |
Hoofdvak |
---|---|---|
123456789 |
2005 |
WISK |
223334444 |
2005 |
ENG |
987654321 |
2005 |
WISK |
135791357 |
2005 |
GESCH |
147025836 |
2005 |
BIOL |
707070707 |
2005 |
WISK |
123456789 |
2006 |
WISK |
223334444 |
2006 |
ENG |
987654321 |
2006 |
PSYCH |
135791357 |
2006 |
REK |
147025836 |
2006 |
BIOL |
707070707 |
2006 |
WISK |
Vakinschrijvingen
Student-id |
Jaar |
Onderwijsperiode |
Curriculum |
Nummer leergang |
Cijfer |
---|---|---|---|---|---|
123456789 |
2005 |
3 |
WISK |
221 |
A |
123456789 |
2005 |
3 |
ENG |
101 |
B |
123456789 |
2006 |
1 |
WISK |
242 |
C |
123456789 |
2006 |
1 |
WISK |
224 |
C |
223334444 |
2005 |
3 |
ENG |
112 |
A |
223334444 |
2005 |
3 |
WISK |
120 |
C |
223334444 |
2006 |
1 |
POLIT |
110 |
A |
223334444 |
2006 |
1 |
ENG |
201 |
B |
987654321 |
2005 |
3 |
WISK |
120 |
A |
987654321 |
2005 |
3 |
PSYCH |
101 |
A |
987654321 |
2006 |
1 |
WISK |
221 |
B |
987654321 |
2006 |
1 |
WISK |
242 |
C |
135791357 |
2005 |
3 |
GESCH |
102 |
A |
135791357 |
2005 |
3 |
REK |
112 |
A |
135791357 |
2006 |
1 |
WISK |
120 |
B |
135791357 |
2006 |
1 |
WISK |
141 |
C |
147025836 |
2005 |
3 |
BIOL |
113 |
B |
147025836 |
2005 |
3 |
SCHEIK |
113 |
B |
147025836 |
2006 |
1 |
WISK |
120 |
D |
147025836 |
2006 |
1 |
STAT |
114 |
B |
707070707 |
2005 |
3 |
WISK |
221 |
B |
707070707 |
2005 |
3 |
STAT |
114 |
A |
707070707 |
2006 |
1 |
WISK |
242 |
D |
707070707 |
2006 |
1 |
WISK |
224 |
C |
Als u een spreadsheetprogramma wilt gebruiken om de voorbeeldgegevens in te voeren, kunt u de volgende sectie overslaan.
De voorbeeldgegevens handmatig invoeren
-
Open een nieuwe of een bestaande database.
-
Klik op het tabblad Maken in de groep Tabellen op Tabel.
In Access wordt een nieuwe, lege tabel aan de database toegevoegd.
Opmerking: U hoeft deze stap niet uit te voeren als u een nieuwe, lege database opent, maar wel wanneer u een tabel aan een database wilt toevoegen.
-
Dubbelklik in de eerste cel van de veldnamenrij en typ de naam van het veld in de voorbeeldtabel.
Lege velden in de veldnamenrij worden in Access standaard aangegeven met de tekst Nieuw veld toevoegen, zoals in:
-
Gebruik de pijltoetsen om naar de volgende lege cel in de veldnamenrij te gaan en typ daarin de tweede veldnaam. (U kunt ook in de nieuwe cel dubbelklikken.) Herhaal deze stap voor elke veldnaam.
-
Voer de gegevens in de voorbeeldtabel in.
Terwijl u de gegevens invoert, wordt aan elk veld een gegevenstype toegekend. Elk veld heeft een specifiek gegevenstype, zoals Numeriek, Tekst of Datum/tijd. Het instellen van gegevenstypen bevordert nauwkeurige gegevensinvoer en helpt vergissingen (zoals het gebruik van een telefoonnummer in een berekening) te voorkomen. Laat de gegevenstypen in deze voorbeeldtabellen door Access afleiden, maar vergeet niet het afgeleide gegevenstype voor elk veld te controleren.
-
Klik na het invoeren van de gegevens op Opslaan of druk op Ctrl+S.
Het dialoogvenster Opslaan als wordt weergeven.
-
Typ in het vak Tabelnaam de naam van de voorbeeldtabel in en klik op OK.
U gebruikt de naam van elke voorbeeldtabel (bijvoorbeeld Hoofdvakken studenten) omdat de query's in de proceduregedeelten van dit artikel ook naar deze namen verwijzen.
Na het invoeren van de voorbeeldgegevens kunt u de twee tabellen vergelijken.
Sla het volgende gedeelte ('De voorbeeldwerkbladen maken') over, tenzij u wilt leren hoe u een werkblad maakt op basis van de voorbeeldgegevens uit de tabellen in het vorige gedeelte.
De voorbeeldwerkbladen maken
-
Start uw spreadsheetprogramma en maak een nieuw, leeg bestand. Als u Excel gebruikt, wordt standaard een nieuwe, lege werkmap gemaakt wanneer u het programma start.
-
Kopieer de eerste voorbeeldtabel van de vorige sectie en plak deze in het eerste werkblad, vanaf de eerste cel. Vergeet niet de veldnamenrij te kopiëren, want deze bevat de veldnamen van de voorbeeldtabel.
-
Voer de opslagprocedure van uw spreadsheetprogramma uit en geef het werkblad dezelfde naam als de voorbeeldtabel. Wanneer u bijvoorbeeld de voorbeeldgegevens uit Vakinschrijvingen plakt, geeft u het werkblad de naam 'Vakinschrijvingen'.
-
Herhaal stap 2 en 3 om de tweede voorbeeldtabel naar een leeg werkblad te kopiëren en de naam van het werkblad te wijzigen.
Opmerking: U moet mogelijk werkbladen aan het werkbladbestand toevoegen. Zie de Help van uw spreadsheetprogramma voor informatie over het toevoegen van werkbladen aan een werkbladbestand.
-
Sla de werkmap op op een geschikte locatie op uw computer of netwerk en ga naar de volgende serie stappen.
Databasetabellen van de werkbladen maken
-
In een nieuwe of bestaande database:
Klik op het tabblad Externe gegevens in de groep Importeren op Excel.
-of-
Klik op Meer en selecteer een spreadsheetprogramma in de lijst.
Het dialoogvenster Externe gegevens ophalen - Programmanaam-werkblad wordt geopend.
-
Klik op Bladeren, zoek en open het werkbladbestand dat u in de vorige stappen hebt gemaakt en klik op OK.
De wizard Werkblad importeren wordt gestart.
In de wizard wordt standaard het eerste werkblad in de werkmap geselecteerd (als u de stappen in het vorige gedeelte hebt gevolgd is dat het werkblad Hoofdvakken studenten). De gegevens uit dit werkblad worden weergegeven in het onderste gedeelte van de wizardpagina.
-
Klik op Volgende.
-
Schakel op de volgende pagina van de wizard het selectievakje Kolomkoppen in eerste rij in en klik op Volgende.
-
Op de volgende pagina van de wizard kunt u veldnamen en gegevenstypen wijzigen of velden van de importbewerking uitsluiten met behulp van de tekstvakken en lijsten onder Veldopties. Voor dit voorbeeld hoeft u niets te wijzigen. Klik op Volgende.
-
Selecteer op de volgende pagina de optie Geen primaire sleutel en klik op Volgende.
-
Standaard krijgt de nieuwe tabel in Access de naam van het werkblad. Accepteer de naam in het vak Importeren in tabel en klik op Voltooien.
-
Klik op de pagina Importstappen opslaan op Sluiten om de wizard te voltooien.
-
Herhaal stap 1 tot en met 7 tot u een tabel hebt gemaakt van elk werkblad in het werkbladbestand.
De voorbeeldtabellen vergelijken en overeenkomende records zoeken met behulp van joins
Nu bent u klaar om de tabel Vakinschrijvingen te vergelijken met de tabel Hoofdvakken studenten. Aangezien u geen relaties tussen de twee tabellen hebt gedefinieerd, moet u in de query joins tussen de juiste velden maken. De tabellen hebben meerdere velden gemeen, en u moet een join maken voor elk paar gemeenschappelijke velden: Studentnummer, Jaar en Curriculum (tabel Vakinschrijvingen) en Hoofdvak (tabel Hoofdvakken studenten). In dit voorbeeld bent u alleen geïnteresseerd in studenten met het hoofdvak wiskunde, dus u gaat ook een veldcriterium gebruiken om de queryresultaten te beperken.
-
Open de database waarin u de voorbeeldtabellen hebt opgeslagen.
-
Klik op het tabblad Maken op Queryontwerp.
-
Dubbelklik op de tabel met de records die u wilt weergeven, in dit voorbeeld de tabel Klasinschrijvingen en dubbelklik vervolgens op de tabel waarmee u deze vergelijkt, in dit voorbeeld de tabel Hoofdvakken voor studenten .
-
Sleep het veld Studentnummer van de tabel Vakinschrijvingen naar het veld Studentnummer van de tabel Hoofdvakken studenten. In het ontwerpraster wordt een lijn tussen de twee tabellen weergegeven, wat aanduidt dat u een join hebt gemaakt. Dubbelklik op de lijn om het dialoogvenster Joineigenschappen te openen.
-
Bekijk de drie opties in het dialoogvenster Joineigenschappen. Standaard is de eerste optie geselecteerd. In bepaalde gevallen moet u de joineigenschappen aanpassen om extra rijen uit één tabel toe te voegen. Aangezien u alleen overeenkomende gegevens zoekt, laat u de join op de eerste optie ingesteld. Sluit het dialoogvenster Joineigenschappen door op Annuleren te klikken.
-
U moet nog twee joins maken. Maak deze joins door het veld Jaar van de tabel Vakinschrijvingen naar het veld Jaar van de tabel Hoofdvakken studenten te slepen en vervolgens het veld Curriculum van de tabel Vakinschrijvingen naar het veld Hoofdvak in de tabel Hoofdvakken studenten te slepen.
-
Dubbelklik in de tabel Vakinschrijvingen op het sterretje (*) om alle velden van de tabel aan het queryontwerpraster toe te voegen.
Opmerking: Wanneer u het sterretje gebruikt om alle velden toe te voegen, wordt slechts één kolom in het ontwerpraster weergegeven. Deze kolom heeft de naam van de tabel, gevolgd door een punt (.) en een sterretje (*). In dit voorbeeld heet de kolom Vakinschrijvingen.*.
-
Dubbelklik in de tabel Hoofdvakken studenten op het veld Hoofdvak om dit veld aan het ontwerpraster toe te voegen.
-
Schakel het selectievakje in de rij Weergeven van de kolom Hoofdvak in het queryontwerpraster uit.
-
Typ WISK in de rij Criteria van de kolom Hoofdvak.
-
Ga naar het tabblad Ontwerpen en klik in de groep Resultaten op Uitvoeren.
De query wordt uitgevoerd en geeft als resultaat alleen de wiskundecijfers voor studenten met het hoofdvak wiskunde.
Twee tabellen vergelijken door een veld als criterium te gebruiken
In bepaalde gevallen zult u tabellen willen vergelijken op basis van velden die overeenkomende gegevens maar verschillende gegevenstypen hebben. Misschien wilt u bijvoorbeeld een tabelveld met het gegevenstype Numeriek vergelijken met een veld in een andere tabel dat het gegevenstype Tekst heeft. Velden met soortgelijke gegevens maar verschillende veldtypen kunnen ontstaan wanneer getallen al dan niet opzettelijk als tekst worden opgeslagen, bijvoorbeeld bij het importeren van gegevens uit een ander programma. Aangezien u geen joins kunt maken tussen velden met verschillende gegevenstypen, moet u de velden op een andere manier vergelijken. U kunt twee velden die verschillende gegevenstypen hebben, vergelijken door één veld als criterium voor het andere veld te gebruiken.
Stel dat u een onderzoeker aan een onderwijsinstelling bent en u wilt zien welke invloed recente wijzigingen van het curriculum van de wiskundeafdeling hebben gehad op de cijfers van studenten. U bent dus met name geïnteresseerd in de cijfers van studenten met als hoofdvak Wiskunde. U beschikt al over de tabel Hoofdvakken studenten en de tabel Vakinschrijvingen. Cijfergegevens zijn opgeslagen in de tabel Vakinschrijvingen, en hoofdvakgegevens voor studenten in de tabel Hoofdvakken studenten. Als u wilt zien hoe de cijfers van wiskundestudenten zijn veranderd, moet u kijken naar records uit de inschrijvingstabel die corresponderende records in de hoofdvakkentabel hebben. Een van de velden die u voor het vergelijken van de tabellen wilt gebruiken, heeft echter een ander gegevenstype dan het corresponderende veld in de andere tabel.
Als u twee tabellen wilt vergelijken door een veld als criterium te gebruiken, maakt u een selectiequery die beide tabellen bevat. U voegt de weer te geven velden toe, en tevens het veld dat correspondeert met het veld dat u als criterium wilt gebruiken. Vervolgens maakt u een criterium om de tabellen te vergelijken. U kunt zoveel criteria voor het vergelijken van velden maken als u wilt.
Ter illustratie van deze methode gaat u de voorbeeldtabellen uit het vorige gedeelte gebruiken, maar u gaat het gegevenstype van het veld Studentnummer in de tabel Hoofdvakken studenten veranderen van Numeriek in Tekst. Aangezien u geen join kunt maken tussen twee velden met verschillende gegevenstypen, moet u de twee Studentnummer-velden vergelijken door één veld als criterium voor het andere veld te gebruiken.
Het gegevenstype van het veld Studentnummer in de tabel Hoofdvakken studenten wijzigen
-
Open de database waarin u de voorbeeldtabellen hebt opgeslagen.
-
Klik in het navigatievenster met de rechtermuisknop op de tabel Hoofdvakken studenten en klik vervolgens op Ontwerpweergave in het snelmenu.
De tabel Hoofdvakken studenten wordt geopend in de ontwerpweergave.
-
Wijzig de instelling voor Studentnummer in de kolom Gegevenstype van Numeriek in Tekst.
-
Sluit de tabel Hoofdvakken studenten. Wanneer u wordt gevraagd of u de wijzigingen wilt opslaan, klikt u op Ja.
De voorbeeldtabellen vergelijken en overeenkomende records zoeken door een veldcriterium te gebruiken
In de volgende procedure wordt gedemonstreerd hoe u de twee Studentnummer-velden vergelijkt door het veld uit de tabel Vakinschrijvingen als criterium voor het veld uit de tabel Hoofdvakken studenten te gebruiken. U kunt de velden vergelijken door middel van het sleutelwoord Like, ook al hebben ze verschillende gegevenstypen.
-
Klik op het tabblad Maken in de groep Overige op Queryontwerp.
-
Dubbelklik op Klasinschrijvingen en dubbelklik vervolgens op Hoofdvakken voor studenten.
-
Sleep het veld Jaar van de tabel Vakinschrijvingen naar het veld Jaar van de tabel Hoofdvakken studenten en sleep het veld Curriculum van de tabel Vakinschrijvingen vervolgens naar het veld Hoofdvak in de tabel Hoofdvakken studenten. Aangezien deze velden dezelfde gegevenstypen hebben, kunt u ze vergelijken door middel van joins. Joins genieten de voorkeur voor het vergelijken van velden die hetzelfde gegevenstype hebben.
-
Dubbelklik op het sterretje (*) in de tabel Vakinschrijvingen om alle velden van de tabel aan het queryontwerpraster toe te voegen.
Opmerking: Wanneer u het sterretje gebruikt om alle velden toe te voegen, wordt slechts één kolom in het ontwerpraster weergegeven. Deze kolom heeft de naam van de tabel, gevolgd door een punt (.) en een sterretje (*). In dit voorbeeld heet de kolom Vakinschrijvingen.*.
-
Dubbelklik in de tabel Hoofdvakken studenten op het veld Studentnummer om dit veld aan het ontwerpraster toe te voegen.
-
Schakel het selectievakje in de rij Weergeven van de kolom Studentnummer in het ontwerpraster uit. Typ Like [Vakinschrijvingen].[Studentnummer] in de rij Criteria van de kolom Studentnummer.
-
Dubbelklik in de tabel Hoofdvakken studenten op het veld Hoofdvak om dit veld aan het ontwerpraster toe te voegen.
-
Schakel het selectievakje in de rij Weergeven van de kolom Hoofdvak in het ontwerpraster uit. Typ WISK in de rij Criteria.
-
Ga naar het tabblad Ontwerpen en klik in de groep Resultaten op Uitvoeren.
De query wordt uitgevoerd en geeft als resultaat alleen de wiskundecijfers voor studenten met het hoofdvak wiskunde.