Tabellen en query's koppelen

Opmerking:  We willen u graag zo snel mogelijk de meest recente Help-inhoud in uw eigen taal bieden. Deze pagina is automatisch vertaald en kan grammaticale fouten of onnauwkeurigheden bevatten. Wij hopen dat deze inhoud nuttig voor u is. Kunt u ons onder aan deze pagina laten weten of de informatie nuttig voor u was? Hier is het Engelstalige artikel ter referentie.

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

Typen joins

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.

Joins werken op dezelfde manier naar query's met criteria in die zin regels die de gegevens voldoen moeten om te worden opgenomen in de querybewerkingen. In tegenstelling tot criteria opgeven joins ook dat elk paar rijen die voldoet aan de worden gecombineerd in de recordset om één rij.

Er zijn vier eenvoudige typen joins: inner joins, outer joins cross joins en ongelijke joins. In dit artikel bevat informatie over elk type join aangegeven die u gebruiken kunt, waarom u elk type en hoe u het maken van joins gebruiken.

Joins zijn voor query's wat relaties zijn voor tabellen: een aanduiding van de manier waarop gegevens in twee bronnen kunnen worden gecombineerd op basis van de gemeenschappelijke gegevenswaarden. Hier ziet u een afbeelding van een join in de queryontwerpweergave, met een dialoogvenster met de eigenschappen van de join:

Het venster Joineigenschappen.

Deze regel tussen de tabellen staat de join definieert. Dubbelklik op een join openen de in het dialoogvenster Joineigenschappen (afgebeeld) en controleren of wijzigen de join definieert.

Joins hebben soms een richting. In dit gebied van het dialoogvenster ziet u waar de tabellen zich in de join bevinden en welke velden voor de join tussen de tabellen worden gebruikt.

In dit gebied wordt het type join aangegeven: bij optie 1 gaat het om een inner join, bij 2 om een left outer join en bij 3 om een right outer join.

Het is mogelijk om velden uit beide tabellen te gebruiken. Gegevens die betrekking hebben op een bepaalde taak, worden uit elke tabel weergegeven. In een inner join worden geen andere gegevens opgenomen. In een outer join worden ook niet-gerelateerde records uit een van de tabellen in de queryresultaten opgenomen.

Naar boven

Typen joins

Er zijn vier basistypen joins: inner joins, outer joins, cross joins en ongelijke joins. Cross joins en ongelijke joins zijn geavanceerde typen die zelden worden gebruikt. U moet deze echter wel kennen zodat u beter begrijpt hoe joins werken.

Inner joins: alleen gerelateerde gegevens uit beide tabellen worden gecombineerd

Bij een inner join worden alleen gegevens uit een tabel opgenomen als er in de gerelateerde tabel overeenkomende gegevens voorkomen, en vice versa. In de meeste gevallen maakt u gebruik van inner joins. Als u een join maakt zonder het type op te geven, wordt aangenomen dat u een inner join wilt maken. Inner joins zijn handig omdat u hiermee gegevens uit twee bronnen kunt combineren op basis van gedeelde waarden. Dit wil zeggen dat u alleen gegevens ziet als het plaatje compleet is.

Outer joins: alle gerelateerde gegevens worden correct gecombineerd, plus de resterende records uit een van de tabellen

Een outer join lijkt op een inner join met als verschil dat de resterende rijen uit een van de tabellen worden toegevoegd. Outer joins hebben een richting: een left outer join bevat alle records uit de linkertabel (de eerste tabel in de join) en een right outer join bevat alle records uit de rechtertabel (de tweede tabel in de join).

Volledige outer joins: alle gegevens worden waar mogelijk gecombineerd

In sommige systemen kan een outer join alle rijen uit beide tabellen bevatten, waarbij overeenkomende rijen worden gecombineerd. Dit wordt een volledige outer join genoemd. Dit type join wordt niet expliciet door Access ondersteund. Door gebruik te maken van een cross join met criteria bereikt u hetzelfde effect.

Cross joins: alle gegevens worden op alle mogelijke manieren gecombineerd

Meestal is een cross join een neveneffect dat optreedt als u bij het toevoegen van twee tabellen aan een query vergeet een join te definiëren. In Access wordt geïnterpreteerd dat u kiest voor weergave van elke record uit de ene tabel gecombineerd met elke record uit de andere tabel, dus elke mogelijke combinatie van records. Omdat er geen gegevens kunnen worden gecombineerd, levert dit type join zelden bruikbare resultaten op. Maar soms is een cross join precies wat u nodig hebt.

Ongelijke joins: deze lijken op een gewone join, maar gebruiken een andere vergelijking om rijen te combineren

In ongelijke joins wordt gebruikgemaakt van een andere operator dan het gelijkteken (=) om waarden te vergelijken en te bepalen of en hoe de gegevens moeten worden gecombineerd. Ongelijke joins worden niet expliciet ondersteund. Door gebruik te maken van een cross join met criteria bereikt u hetzelfde effect.

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 de meest voorkomende type join. Ze zien een query die rijen uit een van de gekoppelde tabellen overeenkomen met rijen in een andere tabel, op basis van de gegevens in de gekoppelde velden. Wanneer een query met een inner join wordt uitgevoerd, wordt alleen de rijen waar een gemeenschappelijke waarde in beide gekoppelde tabellen voorkomt worden opgenomen in de querybewerkingen.

Gebruik van 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 gedefinieerd, Access automatisch inner joins gemaakt als u twee tabellen aan een query toevoegen en deze tabellen een veld met dezelfde of compatibel gegevenstype en een van de joinvelden is een primaire sleutel. De 'een' en 'veel'-symbolen worden niet in dit geval weergegeven omdat referentiële integriteit niet wordt afgedwongen.

Als u query's aan uw query toevoegen en geen relaties tussen deze query's hebt gemaakt, zal Access niet automatisch inner joins tussen deze query's of query's en tabellen maken. In het algemeen wordt moet u ze zelf maken. U kunt een inner join maken door een veld uit een gegevensbron slepen naar een veld in een andere gegevensbron. Een lijn tussen de twee velden om weer te geven dat een join is gemaakt wordt weergegeven.

SQL-syntaxis voor een inner join

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

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

De INNER JOIN-bewerking bevat de volgende onderdelen:

Onderdeel

Beschrijving

tabel1, tabel2

De namen van de tabellen waaruit records worden gecombineerd.

veld1, veld2

De namen van de velden die worden samengevoegd. Niet-numerieke velden moeten hetzelfde gegevenstype hebben en dezelfde soort gegevens bevatten, maar de naam ervan hoeft niet hetzelfde te zijn.

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

Outer joins zien een query die Hoewel enkele van de rijen aan beide zijden van de join die precies overeenkomen, neemt u de query moet alle rijen uit één tabel en ook rijen uit de andere tabel die delen een gemeenschappelijke waarde op beide zijden van de join definieert.

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

Opmerking: U kunt in één oogopslag zien welke tabel is de linkertabel of de juiste tabel in een bepaalde join door te dubbelklikken op de join en klik vervolgens in het dialoogvenster Joineigenschappen . U kunt ook overschakelen naar de SQL-weergave en controleer de FROM-component.

Omdat voor sommige rijen aan één kant van een outer join overeenkomende rijen in de andere tabel ontbreken, zijn sommige velden uit de andere tabel in de queryresultaten leeg als de rijen niet overeenkomen.

Gebruik van 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 in een outer join wijzigen

  1. Dubbelklik in de queryontwerpweergave op de join die u wilt wijzigen.

    Het dialoogvenster Joineigenschappen wordt geopend.

  2. Opmerking in het dialoogvenster Joineigenschappen de opties die worden vermeld naast optie 2 en optie 3.

  3. Klik op de optie van uw keuze en klik vervolgens op OK.

  4. In Access wordt de join weergegeven met een pijl van de gegevensbron waarvan alle rijen worden opgenomen, naar de gegevensbron waarvan alleen de rijen worden opgenomen die aan de joinvoorwaarde voldoen.

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 in de FROM-component opgegeven, zoals hieronder aangegeven:

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

De LEFT JOIN- en RIGHT JOIN-bewerkingen bevatten de volgende onderdelen:

Onderdeel

Beschrijving

tabel1, tabel2

De namen van de tabellen waaruit records worden gecombineerd.

veld1, veld2

De namen van de velden die zijn gekoppeld. De velden moeten hetzelfde gegevenstype hebben en dezelfde soort gegevens bevatten, maar de naam ervan hoeft niet hetzelfde te zijn.

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 .

Een samenvoegquery gebruiken om uit te voeren van een volledige outer join:

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

  2. Klik op het tabblad Start in de groep Weergaven 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 einde 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 SQL-code die u hebt gekopieerd in stap 3 te plakken.

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

  8. Verwijder de puntkomma aan het einde 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]

    U zou 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. Ga naar het tabblad Ontwerpen en klik 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.

Doel van een cross join

Als u onderzoeken welke gevolgen elke mogelijke combinatie van rijen tussen twee tabellen of query's wilt, gebruikt u een cross join. Stel uw bedrijf heeft een spectaculaire jaar en bent u van plan korting naar uw klanten te geven. U kunt een query die de som van elke klant aankopen maken, een kleine tabel met verschillende mogelijke kortingspercentages maken en deze twee combineren in een andere query die een cross join uitvoert. U dit uiteindelijk met een query die wordt weergegeven van een set hypothetische kortingen voor elke klant.

Gebruik van een cross join

Een cross join wordt gegenereerd als u tabellen of query's in uw query opnemen en niet maken ten minste één expliciete join voor elke tabel of query. Access worden gecombineerd voor elke rij uit elke tabel of query die niet expliciet is gekoppeld aan een andere tabel of query toevoegen aan elke tweede rij in de zoekresultaten. Bekijk het kortingsscenario uit de vorige alinea. Wordt ervan uitgegaan dat u 91 klanten hebt en dat u wilt bekijken vijf mogelijke kortingspercentages. Uw cross join produceert 455 rijen (het product van 91 en 5).

Als u zich voorstellen mogelijk, kunnen onbedoelde cross joins enorme aantallen rijen in uw queryresultaten maken. Bovendien worden deze resultaten zijn algemeen zinloos omdat als u niet dat is wel combineren van elke rij met elke tweede rij wilt, meestal de gecombineerde rijen die worden weergegeven in de resultaten geen zinvolle. Tot slot query's die onbedoelde cross joins gebruiken kunnen erg lang duren om uit te voeren.

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

1. de omcirkelde velden moeten worden gekoppeld aan elkaar.

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

1. Houd rekening met het zeer grote aantal records.

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

1. Houd er rekening mee dat het aantal records veel kleiner is.

Naar boven

Deelnemen aan tabellen op basis van een ongelijkheid van veldwaarden

Joins hoeven niet te worden gebaseerd op de gelijkheid van de gekoppelde velden. Een join kan worden gebaseerd op een vergelijkingsoperator, zoals groter dan (>), kleiner dan (<) of niet gelijk aan (<>). Joins die niet op gelijkheid zijn gebaseerd, worden ongelijke joins genoemd.

U gebruikt een ongelijke join als u de rijen van twee gegevensbronnen wilt combineren op basis van veldwaarden die niet gelijk zijn. Meestal zijn ongelijke joins gebaseerd op de vergelijkingsoperators groter dan (>), kleiner dan (<), groter dan of gelijk aan (>=) of kleiner dan of gelijk aan (<=). Met ongelijke joins die worden gebaseerd op de operator niet gelijk aan (<>), kunnen bijna net zo veel rijen als resultaat worden gegeven als met cross joins, en de resultaten zijn vaak lastig te interpreteren.

Gebruik van een ongelijke join

Ongelijke joins worden niet ondersteund in de ontwerpweergave. Als u gebruiken wilt, moet u dit doen met behulp van de SQL-weergave. Echter, u kunt een join maken in de ontwerpweergave, overschakelen naar de SQL-weergave, zoeken de is gelijk aan (=) vergelijkingsoperator en pas deze naar de operator die u wilt gebruiken. Nadat u dit doet, kunt u alleen de query openen in de ontwerpweergave opnieuw als u eerste wijziging de vergelijkingsoperator weer gelijk is aan (=) in 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

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 Office-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.

×