Tabellen en query's koppelen

Belangrijk : Dit artikel is automatisch vertaald, bekijk de disclaimer. De Engelse versie van dit artikel vindt u hier voor referentiedoeleinden.

Als u meerdere gegevensbronnen in een Access-query opneemt, kunt u joins gebruiken om de records die u zien wilt, op basis van hoe de gegevensbronnen zijn gerelateerd aan elkaar te beperken. U ook gebruiken joins combineren van records uit beide gegevensbronnen, zodat elk paar records uit de bronnen één record in de queryresultaten wordt.

In dit artikel wordt beschreven hoe de verschillende typen joins en ziet u hoe u deze gebruiken in een query. Een join wordt standaard automatisch gemaakt als er al een relatie tussen twee gegevensbronnen die u in een query gebruiken. Een join wordt ook gemaakt als er velden zijn die duidelijk met elkaar overeenkomen. U kunt een automatisch gemaakte join verwijderen. Dit artikel bevat algemene informatie over relaties tussen tabellen, inclusief hoe u een account maakt.

Opmerking : U kunt deelnemen aan query's op dezelfde manier die u deelnemen aan tabellen en kunt ook deelnemen aan beide.

In dit artikel

Overzicht

Rijen weergeven met een gemeenschappelijke waarde in beide gekoppelde tabellen

Alle rijen uit één tabel weergeven overeenkomende rijen uit een andere tabel

Alle rijen uit beide tabellen weergeven en vervolgens deelnemen waar een gemeenschappelijke waarde voorkomt

Cross joins

Deelnemen aan tabellen op basis van een ongelijkheid van veldwaarden

Een join verwijderen

Overzicht

Een database is een verzameling tabellen met gegevens die logische relaties met elkaar. Relaties kunt u verbinding maken met tabellen door velden die ze elkaar gemeen hebben. Een tabel kan deel uitmaken van een willekeurig aantal relaties, maar elke relatie heeft altijd precies twee tabellen. Een relatie wordt in een query vertegenwoordigd door een join.

Wanneer u tabellen aan een query toevoegen, maakt Access joins die zijn gebaseerd op relaties die tussen de tabellen zijn gedefinieerd. U kunt handmatig joins maken in query's, zelfs als deze niet weergeven relaties die al zijn gedefinieerd. Als u andere query's (in plaats van of naast tabellen) als gegevensbron voor een query gebruikt, kunt u joins tussen de bron-query's, en ook tussen deze query's en tabellen die u als gegevensbron gebruikt.

De werking van joins is vergelijkbaar met de werking van querycriteria in die zin dat er regels worden vastgelegd waaraan de gegevens moeten voldoen om te worden opgenomen in de querybewerkingen. In tegenstelling tot querycriteria, is bij joins tevens vastgelegd dat elk paar rijen dat voldoet aan de joinvoorwaarden in de recordset wordt gecombineerd in één rij.

Er zijn vier basistypen joins: inner joins, outer joins, cross joins en ongelijkwaardige joins. Dit artikel bevat informatie over elk type join dat u kunt gebruiken, de reden waarom u een bepaald type join zou gebruiken en de wijze waarop u de joins kunt maken.

Naar boven

Rijen weergeven met een gemeenschappelijke waarde in beide gekoppelde tabellen

Als u alleen rijen wilt weergeven waarvan het gekoppelde veld overeenkomende waarden bevat, gebruikt u een inner join. Inner joins worden in Access automatisch gemaakt.

Inner joins zijn het meest algemene type join. Een inner join 'vertelt' een query - op basis van de gegevens in de gekoppelde velden - dat rijen in de ene gekoppelde tabel corresponderen met rijen in de andere tabel. Wanneer een query met een inner join wordt uitgevoerd, worden alleen díe rijen in de querybewerkingen opgenomen die een overeenkomende waarde in beide gekoppelde tabellen hebben.

Hoe gebruik ik een inner join?

Meestal hoeft u niets te doen als u wilt werken met een inner join. Als er al een relatie bestaat tussen de tabellen die u toevoegt, wordt in Access bij het toevoegen automatisch een inner join tussen elk paar gerelateerde tabellen gemaakt. Als referentiële integriteit wordt afgedwongen, ziet u boven de joinlijn ook een "1" bij de tabel aan de "één"-kant van een een-op-veel-relatie en een oneindigheidsteken () bij de tabel aan de "veel"-kant.

Zelfs als u geen relaties hebt gedefinieerd, worden er automatisch inner joins gemaakt wanneer u twee tabellen toevoegt aan een query, op voorwaarde dat deze tabellen elk een veld bevatten met hetzelfde of een compatibel gegevenstype, en dat een van de joinvelden een primaire sleutel is. De symbolen voor 'één' en 'veel' worden in dit geval niet weergegeven omdat referentiële integriteit niet wordt afgedwongen.

Als u query's aan uw query toevoegt en geen relaties tussen die query's hebt gedefinieerd, worden er niet automatisch inner joins gemaakt tussen die query's of tussen query's en tabellen. Meestal moet u deze zelf maken. U kunt een inner join maken door een veld van de ene gegevensbron naar een veld in een andere gegevensbron te slepen. Er wordt in Access een lijn weergegeven tussen de twee velden om aan te geven dat er een join is gemaakt.

SQL-syntaxis voor een inner join

Inner joins worden in SQL opgegeven in de FROM-component, zoals hierna wordt aangegeven:

FROM tabel1 INNER JOIN tabel2 ON tabel1. veld1 tabel2 vergelijken. veld2

De bewerking INNER JOIN heeft de volgende argumenten:

Argument

Beschrijving

tabel1, tabel2

De naam van de tabellen waaruit records worden gecombineerd.

veld1, veld2

De namen van de velden die worden samengevoegd. Als de velden niet numeriek zijn, moet het gegevenstype van de velden gelijk zijn en moeten ze hetzelfde soort gegevens bevatten. Ze hoeven echter niet dezelfde naam te hebben.

vergelijken

Een relationele vergelijkingsoperator: '=,' '<,' '>,' '<=,' '>=' of '<>.'

Zie voor meer informatie over de syntaxis van inner join, het onderwerp INNER JOIN-bewerking.

Naar boven

Alle rijen uit één tabel weergeven overeenkomende rijen uit een andere tabel

Een outer join 'vertelt' een query dat hoewel sommige rijen aan beide zijden van de join exact met elkaar corresponderen, álle rijen uit de ene tabel in de query moeten worden opgenomen, evenals de rijen uit de andere tabel die aan beide zijden van de join een overeenkomende waarde hebben.

Outer joins kunnen left outer joins of right outer joins zijn. In een left outer join bevat de query alle rijen van de eerste tabel in de FROM-component van de SQL-instructies, en alleen die rijen uit de andere tabel waarvan het gekoppelde veld in beide tabellen dezelfde waarde bevat. In een right outer join bevat de query alle rijen uit de tweede tabel in de FROM-component van de SQL-instructie, en alleen die rijen uit de andere tabel waarvan het gekoppelde veld in beide tabellen dezelfde waarde bevat.

Opmerking : Als u wilt weten welke tabel de linker- of de rechtertabel in een bepaalde join is, dubbelklikt u op de join en bekijkt u het dialoogvenster Joineigenschappen. U kunt ook naar de SQL-weergave schakelen en de FROM-component bekijken.

Sommige rijen aan de ene zijde van een outer join hebben geen corresponderende rijen in de andere tabel. Wanneer de rijen niet corresponderen, kunnen sommige velden die in het queryresultaat van die andere tabel worden weergegeven, leeg zijn.

Hoe gebruik ik een outer join?

U maakt een outer join door een bestaande inner join te wijzigen. Als er geen inner join bestaat, maakt u er een en wijzigt u deze in een outer join.

Een inner join wijzigen in een outer join

  1. Dubbelklik in de ontwerpweergave van de query op de join die u wilt wijzigen.

    Het dialoogvenster Joineigenschappen wordt geopend.

  2. Bekijk in het dialoogvenster Joineigenschappen de mogelijkheden naast optie 2 en optie 3.

  3. Klik op de gewenste optie en klik vervolgens op OK.

  4. De join wordt weergegeven en een pijl wijst van de gegevensbron waarvan alle rijen worden opgenomen, naar de gegevensbron waarvan alleen díe rijen worden opgenomen die voldoen aan de joinvoorwaarde.

Dubbelzinnige outer joins

Als u een query waarin een LEFT JOIN en een INNER JOIN maken, Access niet mogelijk om te bepalen welke deelnemen aan de bewerking eerst moet worden uitgevoerd. Omdat de resultaten verschillen afhankelijk van of de linker-join of de inner join eerst wordt uitgevoerd zijn, wordt een foutbericht weergegeven:

U lost deze fout, moet u de query wijzigen zodat duidelijk is welke join eerst moet worden uitgevoerd.

SQL-syntaxis voor een outer join

Outer joins worden in SQL opgegeven in de FROM-component, zoals hierna wordt aangegeven:

FROM tabel1 [LEFT | RIGHT] JOIN tabel2
op tabel1.veld1 vergelijken tabel2.veld2

De bewerkingen LEFT JOIN en RIGHT JOIN hebben de volgende argumenten:

Argument

Beschrijving

tabel1, tabel2

De naam van de tabellen waaruit records worden gecombineerd.

veld1, veld2

De naam van de velden die worden samengevoegd. De velden moeten van hetzelfde gegevenstype zijn en hetzelfde soort gegevens bevatten, maar ze hoeven niet dezelfde naam te hebben.

vergelijken

Een relationele vergelijkingsoperator: '=,' '<,' '>,' '<=,' '>=' of '<>.'

Zie het onderwerp LEFT JOIN, RIGHT JOIN-bewerkingenvoor meer informatie over de syntaxis van outer joins.

Naar boven

Alle rijen uit beide tabellen weergeven en vervolgens deelnemen waar een gemeenschappelijke waarde voorkomt

Als u alle rijen uit twee tabellen weergeven en koppelen op basis van algemene waarden wilt, gebruikt u een volledige outer join. Access volledige outer joins niet expliciet ondersteund, maar u kunt hetzelfde effect bereiken met behulp van een samenvoegquery. De volgende procedure wordt uitgelegd hoe u dit doen, maar als u meer informatie over samenvoegquery's wilt, raadpleegt u de sectie Zie ook .

Als u een samenvoegquery wilt gebruiken om een volledige outer join uit te voeren, gaat u als volgt te werk:

  1. Maak een query die een linker outer join heeft op het veld dat u voor een volledige outer join wilt gebruiken.

  2. Klik in de groep Weergaven op het tabblad Start op Weergave en klik vervolgens op SQL-weergave.

  3. Druk op CTRL+C om de SQL-code te kopiëren.

  4. Verwijder de puntkomma aan het eind van de FROM-component en druk op ENTER.

  5. Typ UNION en druk op ENTER.

    Opmerking : Gebruik niet het sleutelwoord ALL wanneer u een samenvoegquery gebruikt om een volledige outer join uit te voeren.

  6. Druk op CTRL+V om de in stap 3 gekopieerde SQL-code te plakken.

  7. Wijzig LEFT JOIN in RIGHT JOIN in de code die u hebt geplakt.

  8. Verwijder de puntkomma aan het eind van de tweede FROM-component en druk op ENTER.

  9. Voeg een WHERE-component toe die aangeeft dat de waarde van het joinveld NULL is in de eerste tabel in de FROM-component (de linkertabel).

    Stel dat de FROM-component als volgt is:

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

    In dit geval zou u de volgende WHERE-component toevoegen:

    WHERE Products.ID IS NULL

  10. Typ een puntkomma (;) aan het eind van de WHERE-component ter aanduiding van het einde van de samenvoegquery.

  11. Klik op het tabblad Ontwerpen, in de groep Resultaten, op Uitvoeren.

Cross joins

Cross joins verschillen van de binnenste en buitenste joins in dat ze niet expliciet worden aangegeven in Access. In een cross join, wordt elke rij van de ene tabel gecombineerd met elke rij uit een andere tabel, waardoor wat is een kruisproduct of Cartesisch product genoemd. Elk gewenst moment die een query die de tabellen die niet expliciet worden gekoppeld, heeft is een kruisproduct het resultaat. Cross joins zijn meestal onbedoeld, maar er zijn zaken waar ze handig kunnen zijn.

Waarom een cross join gebruiken?

Als u elke mogelijke combinatie van rijen tussen twee tabellen of query's wilt onderzoeken, gebruikt u een cross join. Stel dat uw bedrijf een fantastisch jaar heeft gehad en dat u overweegt uw klanten een korting te geven. U kunt een query samenstellen waarin de aankopen van elke klant worden opgeteld, een kleine tabel maken met verschillende mogelijke kortingspercentages en deze twee combineren in een andere query die een cross join uitvoert. Het resultaat is een query die een set hypothetische kortingen voor elke klant weergeeft.

Hoe gebruik ik een cross join?

Een cross join wordt gegenereerd als u tabellen of query's opneemt in uw query en niet ten minste één expliciete join voor elke tabel of query maakt. In Access wordt elke rij uit elke tabel of query die niet expliciet gekoppeld is aan een andere tabel of query, gecombineerd met elke andere rij in de resultaten. Denk nog maar eens aan het kortingsscenario uit de vorige alinea. Stel dat u 91 klanten hebt en dat u vijf mogelijke kortingspercentages wilt onderzoeken. Uw cross join produceert 455 rijen (het product van 91 en 5).

U kunt zich wellicht voorstellen dat abusievelijk geproduceerde cross joins enorme aantallen rijen in uw queryresultaat tot gevolg kunnen hebben. Bovendien zijn deze resultaten over het algemeen zinloos. Als het immers niet uw bedoeling was om elke rij daadwerkelijk met elke andere rij te combineren, hebben de meeste gecombineerde rijen die in de resultaten worden weergegeven geen enkele betekenis. Tot slot vergt de uitvoering van query's die onbedoelde cross joins produceren heel veel tijd.

Onbedoelde cross join in de ontwerpweergave van de query
Een onbedoelde cross join in de queryontwerpweergave.

1. De omcirkelde velden moeten aan elkaar worden gekoppeld

Onbedoeld kruisproduct
De kruisproduct die het resultaat van de onbedoelde cross join in de voorbeelden hierboven.

1. Let op het grote aantal records

Het gecorrigeerde queryresultaat
De resultaten nadat de juiste join is gemaakt.

1. Het aantal records is veel kleiner

Naar boven

Deelnemen aan tabellen op basis van een ongelijkheid van veldwaarden

Joins hoeven niet te zijn gebaseerd op de gelijkwaardigheid van de gekoppelde velden. Een join kan zijn gebaseerd op elke vergelijkingsoperator, bijvoorbeeld 'groter dan' (>), 'kleiner dan' (<) of 'niet gelijk aan' (<>). Joins die niet gebaseerd zijn op gelijkwaardigheid worden ongelijkwaardige joins genoemd.

Als u de rijen van twee gegevensbronnen wilt combineren op basis van veldwaarden die niet gelijk zijn, gebruikt u een ongelijkwaardige join. Ongelijkwaardige joins zijn meestal gebaseerd op de vergelijkingsoperator 'groter dan' (>), 'kleiner dan' (<), 'groter dan of gelijk aan' (>=) of 'kleiner dan of gelijk aan' (<=). Het resultaat van een ongelijkwaardige join die is gebaseerd op de operator 'niet gelijk aan' (<>) kan bijna net zoveel rijen als een cross join opleveren en de resultaten kunnen moeilijk te interpreteren zijn.

Hoe gebruik ik een ongelijkwaardige join?

Ongelijkwaardige joins worden niet ondersteund in de ontwerpweergave. U kunt een ongelijkwaardige join wel gebruiken in de SQL-weergave. Als u echter een join maakt in de ontwerpweergave, kunt u overschakelen naar de SQL-weergave en de vergelijkingsoperator 'is gelijk aan' (=) wijzigen in de gewenste operator. Hierna kunt u de query alleen opnieuw in de ontwerpweergave openen als u eerst de vergelijkingsoperator weer wijzigt in 'is gelijk aan' (=) in de SQL-weergave.

Een join verwijderen

Als in Access automatisch een join wordt gemaakt die u niet wenst, of als u per ongeluk een join maakt , bijvoorbeeld tussen twee velden met elk een ander gegevenstype , kunt u de join verwijderen.

  1. Klik in het queryontwerpraster op de join die u wilt verwijderen.

  2. Druk op DELETE.

-of-

  • Klik in het queryontwerpraster met de rechtermuisknop op de join die u wilt verwijderen en klik vervolgens op Verwijderen.

Naar boven

Opmerking : Disclaimer voor automatische vertaling: Dit artikel is vertaald door een computersysteem zonder menselijke tussenkomst. Microsoft biedt deze automatische vertalingen aan om niet-Engels sprekende gebruikers te helpen de inhoud over producten, services en technologieën van Microsoft te raadplegen. Omdat het artikel automatisch is vertaald, bevat het mogelijk fouten in grammatica, woordenschat en syntaxis.

Zie ook

Records toevoegen aan een tabel met behulp van een toevoegquery

Combineren de resultaten van verschillende selectiequery's met behulp van een samenvoegquery

Query's op basis van meerdere tabellen maken

Maken, bewerken of verwijderen van een relatie

Uw vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Office Insiders

Was deze informatie nuttig?

Bedankt voor uw feedback.

Hartelijk dank voor uw feedback! Het lijkt ons een goed idee om u in contact te brengen met een van onze Office-ondersteuningsagents.

×