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.
- Right outer join. Alle records uit de tabel worden opgenomen onder Naam van rechtertabel en alleen de records uit de tabel onder Naam van linkertabel waarin de gekoppelde velden identiek zijn, bijvoorbeeld alle producten, zelfs wanneer er geen orders voor zijn. In dat geval worden lege waarden weergegeven in de velden Order-id en Hoeveelheid.
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 u uit de query haalt, leest u de tekst in het dialoogvenster Joineigenschappen zorgvuldig.
1. Gegevensbronnen toevoegen
- SelecteerQueryontwerp maken>.
Voeg alle benodigde tabellen en query's toe als gegevensbron. (Maak je 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.