Abfragen [basics]: Verknüpfungseigenschaften

Zwischen den Verknüpfungseigenschaften der Beziehung von Tabellen und deren Abbild im Entwurf einer Abfrage gibt es einige Unterschiede. Während man im Beziehungenfenster eher die referenzielle Integrität, Löschweitergabe und Aktualisierungsweitergabe definiert, kümmern wir uns im Abfrageentwurf um ganz andere Eigenschaften. Die Stichworte hier lauten Full Join, Left Join, Right Join und Inner Join. Was diese Begriffe bedeuten, erklären wir in diesem Artikel – und Du erfährst auch, für welche Zwecke Du die verschiedenen Join-Typen verwenden kannst.

Beispieldatenbank

Die Beispiele dieses Artikels findest Du in der Datenbank 2301_AbfragenBasics_Verknuepfungseigenschaften.accdb.

Verschiedene Beziehungstypen

In Microsoft Access ist es in Abfragen möglich, Beziehungen zwischen zuvor zum Entwurf hinzugefügten Tabellen herzustellen, um die Daten aus beiden Tabellen auf verschiedene Arten zu kombinieren.

Diese Beziehungen werden durch Verknüpfungseigenschaften definiert, die im Eigenschaftendialog der Verknüpfung zwischen den Tabellen festgelegt werden.

Die Verknüpfungseigenschaften steuern, wie Datensätze in den verknüpften Tabellen zusammengeführt werden. Es gibt vier verschiedene Arten von Verknüpfungseigenschaften. Für diese gibt es schöne englische Bezeichnungen – passende deutsche Benennungen sind leider nicht verfügbar:

  • Inner Join
  • Left Join
  • Right Join
  • Cross Join

Jede dieser Verknüpfungseigenschaften hat unterschiedliche Auswirkungen auf die Abfrageergebnisse – nachfolgen beschrieben anhand von zwei Tabellen, die in einer Abfrage angelegt wurden:

Die Inner Join-Verknüpfungseigenschaft ist die Standardverknüpfung in Access. Wenn diese Eigenschaft ausgewählt wird, werden nur die Datensätze angezeigt, die in beiden verknüpften Tabellen vorhanden sind. Dies bedeutet, dass wenn es in einer der beiden Tabellen keinen übereinstimmenden Datensatz gibt, dieser in der Abfrage nicht angezeigt wird.

Die Left Join-Verknüpfungseigenschaft zeigt alle Datensätze aus der linken (oder ersten) Tabelle an und die übereinstimmenden Datensätze aus der rechten (oder zweiten) Tabelle. Wenn es in der rechten Tabelle keine übereinstimmenden Datensätze gibt, werden diese Felder mit Nullwerten gefüllt.

Die Right Join-Verknüpfungseigenschaft funktioniert ähnlich wie die Left Join-Verknüpfung, zeigt aber alle Datensätze aus der rechten Tabelle an und die übereinstimmenden Datensätze aus der linken Tabelle.

Wenn es in der linken Tabelle keine übereinstimmenden Datensätze gibt, werden diese Felder mit Nullwerten gefüllt.

Die Cross Join-Verknüpfung kann man nicht per Eigenschaftseinstellung abbilden – sie ist schlicht eine nicht vorhandene Beziehung und zeigt die Kombinationen der Datensätze aus beiden Tabellen an, unabhängig davon, ob es eine Übereinstimmung gibt oder nicht.

Verknüpfungstypen umsetzen

Nun schauen wir uns die Verknüpfungstypen in der Praxis an. Dazu ziehen wir einfach zwei Tabellen der Beispieldatenbank in eine neue, leere Abfrage. Im Beispiel verwenden wir die beiden Tabellen tblArtikel und tblKategorien. Wie wir in Bild 1 sehen, fügt Access automatisch die Beziehung hinzu, wie wir sie im Beziehungen-Fenster definiert haben.

Beim Hinzufügen von Tabellen übernimmt Access die Beziehungen aus dem Beziehungen-Fenster.

Bild 1: Beim Hinzufügen von Tabellen übernimmt Access die Beziehungen aus dem Beziehungen-Fenster.

Wenn Du keine weiteren Einstellungen im Beziehungen-Fenster vorgenommen hast, landet also genau die dort definierte Beziehung auch in der Abfrage.

Der Verknüpfungstyp “Inner Join”

Dabei handelt es sich um den Typ Inner Join. Dies gilt unabhängig davon, ob für die Beziehung referenzielle Integrität definiert wurde oder nicht – dies hat auf die Anzeige der Daten im Abfrageergebnis keine Auswirkung. In der Abfrage qryArtikelKategorien haben wir nun einige Felder aus beiden Tabellen in das Entwurfsraster der Abfrage gezogen.

Wechseln wir in die Datenblattansicht der Abfrage, um das Ergebnis anzuzeigen, sehen wir alle Kombinationen aus Datensätzen der beiden Tabellen tblArtikel und tblKategorien (siehe Bild 2). Es kann sein, dass es Einträge in der Tabelle tblKategorien gibt, die noch keinem Artikel zugewiesen sind – diese werden dann in dieser Abfrage einfach nicht angezeigt. Da wir für die Beziehung zwischen den Tabellen tblArtikel und tblKategorien referenzielle Integrität definiert haben, kann es hingegen keinen Datensatz in der Tabelle tblArtikel geben, der nicht mit einem Datensatz der Tabelle tblKategorien verknüpft ist.

Ergebnis einer Inner Join-Abfrage

Bild 2: Ergebnis einer Inner Join-Abfrage

Der Verknüpfungstyp “Cross Join”

Dieser Verknüpfungstyp sieht vor, dass jede Kombination aus den Datensätzen der ersten Tabelle mit den Datensätzen der zweiten Tabelle abgebildet wird. Um dies für die vorherige Abfrage zu erreichen, müssen wir lediglich den Verknüpfungspfeil zwischen den beiden Tabellen entfernen, indem wir diesen markieren und die Entf-Taste betätigen (siehe Bild 3).

Entwurf einer Cross Join-Abfrage

Bild 3: Entwurf einer Cross Join-Abfrage

Das Ergebnis der Abfrage sehen wir in Bild 4. Das Ergebnis ist überschaubar, da die Tabelle tblArtikel der Beispieldatenbank nur vier Datensätze enthält und die Tabelle tblKategorien nur drei. Alle Kombinationen dieser Datensätze liefern also 3 x 4 gleich 12 Datensätze.

Ergebnis einer Cross Join-Abfrage

Bild 4: Ergebnis einer Cross Join-Abfrage

Einsatzzwecke für “Cross Join”-Abfragen

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar