Gegevens beheren met query 's

Query's maken met outer joins

Uw browser biedt geen ondersteuning voor video. Installeer Microsoft Silverlight, Adobe Flash Player of Internet Explorer 9.

Soms wilt u in uw query's alle records uit één tabel bekijken, samen met de overeenkomende records uit een andere tabel. U kunt dit doen door outer joins te maken.

Met inner joins worden er alleen gegevens weergegeven wanneer beide verbonden gegevensbronnen een overeenkomende id bevatten. Als u bijvoorbeeld de verkochte producten en hoeveelheden wilt weergeven, maakt u een inner join tussen de tabellen Producten en Ordergegevens. Wanneer u de query uitvoert, worden alleen de producten geretourneerd die in orders voorkomen en dus in beide tabellen worden weergegeven.

Daarentegen worden met outer joinsalle gegevens uit één gegevensbron en bepaalde gegevens uit een andere tabel of gegevensbron geretourneerd.

Als u bijvoorbeeld wilt zien welke producten nog niet zijn verkocht, maakt u een query waarmee de Product-id uit de tabel Producten en de bijbehorende Order-id's uit de tabel Ordergegevens worden weergegeven. Voor producten die geen overeenkomende records hebben in de tabel Ordergegevens, wordt de productnaam weergegeven zonder waarde voor het veld Order-id.

Left outer joins en right outer joins

In een outer join wordt de tabel waarvan alle records worden weergegeven, de basistabel genoemd. De tabel waarvan alleen bepaalde (overeenkomende) records worden weergegeven, wordt de secundaire tabel genoemd.

In het dialoogvenster Joineigenschappen wordt beschreven wat u ziet met de verschillende typen joins:

Schermafbeelding van drie tabellen en de joineigenschappen

Stel dat u een query hebt gemaakt om aan te geven welke producten uw klanten hebben gekocht. De uitvoervelden zijn Productnaam, Order-id en Hoeveelheid.

  1. Inner join. Er worden alleen rijen (records) opgenomen waarin de gekoppelde velden uit beide tabellen identiek zijn, bijvoorbeeld alleen de producten waaraan orders zijn gekoppeld.

  2. Left outer join. Alle records van de tabel onder Naam van linkertabel worden opgenomen en alleen de records van de tabel onder Naam van rechtertabel waarin de gekoppelde velden identiek zijn, bijvoorbeeld alle orders, maar alleen de hoeveelheden en Product-id's voor de orders waaraan producten zijn gekoppeld.

  3. Right outer join. Alle records van de tabel onder Naam van rechtertabel worden opgenomen en alleen de records van de tabel onder Naam van linkertabel waarin de gekoppelde velden identiek zijn, bijvoorbeeld alle producten, ook als er geen orders voor bestaan. In dit geval bevatten de velden Order-id en Hoeveelheid lege waarden.

Zoals u in deze voorbeelden kunt zien, is het belangrijk om te weten welke tabel links staat en welke rechts. Dit is niet altijd hetzelfde als hoe de tabellen zijn gerangschikt in het queryvenster. Als u wilt weten welke gegevens worden geretourneerd door de query, leest u de tekst in het dialoogvenster Joineigenschappen zorgvuldig.

1. Gegevensbronnen toevoegen

  • Selecteer Maken > Queryontwerp.

Voeg alle benodigde tabellen en query's toe als gegevensbron. (Maak u geen zorgen. Als u een gegevensbron vergeet, kunt u deze later toevoegen.)

Mogelijk worden automatisch relaties weergegeven voor de gegevensbronnen, als deze worden gedetecteerd in Access.

2. Een join toevoegen

  • Als u geen relatie ziet tussen de bronnen, voegt u een join toe. Sleep van het gewenste veld in één gegevensbron naar het bijbehorende veld in een andere gegevensbron. De tabel van waaruit u sleept, is de tabel die links wordt weergegeven in het dialoogvenster Joineigenschappen. Standaard wordt in Access een inner join gemaakt. Als u een outer join nodig hebt, wijzigt u het type.

    Schermafbeelding van een join tussen twee tabellen

3. Een join wijzigen

  1. Dubbelklik op de regel van de join die u wilt wijzigen.

  2. Als u een outer join wilt maken, selecteert u de tweede of derde optie in het dialoogvenster Joineigenschappen. Selecteer vervolgens OK.

    Let erop welke tabel de basistabel is, de tabel waarvan alle records worden weergegeven.

    Schermafbeelding van Joineigenschappen met naam van linkertabel gemarkeerd

4. De query voltooien

Volg de gebruikelijke stappen voor het maken van een query: voeg uitvoervelden toe, voeg criteria toe en voer de query uit of sla deze op. Zie Basisquery's maken voor meer informatie hierover.

Wilt u meer zien?

Basisquery's maken

Training voor Excel

Training voor Outlook

Laten we eens kijken hoe de left en right outer joins in een selectiequery worden gebruikt.

Outer joins hebben kanten, links en rechts, en ze geven als resultaat ALLE gegevens uit de ene tabel, en alleen OVEREENKOMENDE gegevens uit de andere. Ze zijn handig als u wilt weten wanneer iets niet is gebeurd, bijvoorbeeld: een bepaald artikel verkoopt NIET of studenten zijn NIET ingeschreven voor een bepaalde cursus.

Laten we daar nu iets aan toevoegen.

De tabel die als resultaat ALLE gegevens geeft, heet de 'basistabel' en de tabel die als resultaat OVEREENKOMSTEN geeft, heet de 'secundaire tabel'.

Welke de basistabel en welke de secundaire tabel is, hangt af van de richting van de join.

Als u een right outer join gebruikt, wordt de tabel aan de rechterkant de basistabel. Als u een left outer join gebruikt, wordt de tabel aan de linkerkant de basistabel.

U bepaalt zelf in het dialoogvenster Joineigenschappen of u een left dan wel right outer join gebruikt. Selecteer en klik dan met de rechtermuisknop op of dubbeltik op de join-lijn…vervolgens op Joineigenschappen … en selecteer de tweede of derde optie.

Goed, laten we eens kijken hoe dit werkt:

Selecteer op het tabblad Maken de optie Queryontwerp. Hier voegen we de tabellen Orderdetails en Producten toe.

U kunt zien dat in Access een een-op-veel-relatie als patroon voor de join is gebruikt en dat betekent dat het een inner join is.

We voegen de velden Productnaam en Hoeveelheid toe en als we de query uitvoeren, worden er alleen gegevens geretourneerd voor producten die zijn besteld.

We weten dit omdat als de query gegevens voor niet-bestelde producten zou retourneren, we hier lege records te zien zouden krijgen.

Weer terug in de Ontwerpweergave klikken we met de rechtermuisknop op de join-lijn of dubbeltikken we hierop en selecteren we Joineigenschappen. Selecteer de tweede optie en let op de join-lijn.

De pijl geeft aan dat het een outer join is en wijst ook naar de secundaire tabel. Voer de query uit, sorteer de gegevens van klein naar groot en nu weten we welke producten niet verkopen.

Wat gebeurt er nu als we een right outer join instellen?

We brengen de wijziging aan, ... voeren de query uit ... en krijgen dezelfde resultaten als een inner join: geen lege records.

Als we naar het dialoogvenster Joineigenschappen kijken, zien we waarom.

We krijgen als resultaat wel alle gegevens uit de tabel Orderdetails, maar alleen OVEREENKOMSTEN uit de tabel Producten. Met andere woorden: we krijgen alleen producten te zien die een bijbehorende order hebben en dat is hetzelfde resultaat dat met een inner join wordt verkregen.

U hebt nu gezien hoe u outer joins kunt gebruiken in een selectiequery waarin meerdere gegevensbronnen worden gebruikt. Dus denk goed na over hoe u joins gebruikt, en als u niet het gewenste resultaat krijgt, kunt u ze altijd nog wijzigen.

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.

×