Probeer het zelf
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:
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.
-
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.
-
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.
-
Rechter outer join. Neem alle records uit de tabel op onder Rechtertabelnaam en alleen de records uit de tabel onder Naam van linkertabel waarin de gekoppelde velden gelijk zijn, bijvoorbeeld alle producten, zelfs als er geen orders voor zijn, in welk geval lege waarden worden weergegeven in de velden Order-id en Hoeveelheid.
Zoals u aan de hand van deze voorbeelden kunt zien, is het belangrijk om te weten welke tabel zich aan de linkerkant bevindt en welke zich aan de rechterkant bevindt. Dit kan in feite verschillen van de manier waarop de tabellen zijn gerangschikt in het queryvenster. Als u wilt weten welke gegevens u uit uw query haalt, leest u de tekst zorgvuldig door in het dialoogvenster Eigenschappen voor samenvoegen.
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.
3. Een join wijzigen
-
Dubbelklik op de regel van de join die u wilt wijzigen.
-
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.
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.