window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Abfragen [basics]: Verknüpfungseigenschaften

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

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

Sinnvoll einsetzen kann man eine solche Abfrage beispielsweise dort, wo es verschiedene Eigenschaften für eine Entität gibt – beispielsweise Farbe und Größe.

Dann kann man durch eine Cross Join-Verknüpfung der beiden Tabellen mit den Farben und Größen alle Kombinationen ausgeben.

Die Verknüpfungstypen “Left Join” und “Right Join”

Diese beiden Verknüpfungstypen sind prinzipiell gleich, denn sie unterscheiden sich nur dadurch, auf welcher Seite der Beziehung welche Tabelle steht.

Um eine Abfrage mit zwei Tabellen zu erstellen, die mit einem dieser Verknüpfungstypen miteinander verknüpft sind, benötigen wir erst einmal eine herkömmliche Verknüpfung. Dann klicken wir entweder doppelt auf den Verknüpfungspfeil und zeigen so den Dialog Verknüpfungseigenschaften an oder klicken mit der rechten Maustaste auf den Verknüpfungspfeil und wählen den Eintrag Verknüpfungseigenschaften aus dem Kontextmenü aus. Dieser Dialog zeigt die an der Beziehung beteiligten Tabellen und die verknüpften Felder an (siehe Bild 5). Außerdem liefert er die Art der Verknüpfung:

Anzeigen der Verknüpfungseigenschaften

Bild 5: Anzeigen der Verknüpfungseigenschaften

1: Inner Join

2: Left Join

3: Right Join

Zur Erinnerung: Um die vierte Art der Verknüpfung (Cross Join) zu erhalten, entfernen wir den Verknüpfungspfeil einfach.

Wenn wir die Tabelle tblKategorien unter Linker Tabellenname vorfinden und tblArtikel unter Rechter Tabellenname, bedeutet die zweite Option einen Left Join zwischen diesen beiden Tabellen und die dritte Option einen Right Join (siehe Bild 6).

Verknüpfungseigenschaften mit Left Join

Bild 6: Verknüpfungseigenschaften mit Left Join

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar