Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Inner, Left und Right Outer Joins

Wer mit SQL Abfragen definiert, anstatt dies mit der Abfrageentwurfsansicht von Access zu erledigen, bentigt ein wenig mehr Hintergrundkenntnisse. Im vorliegenden Beitrag finden Sie eine kurze Beschreibung der verschiedenen Verknpfungsarten zwischen Tabellen in Abfragen.

INNER JOIN

Eine Verknpfung (JOIN) bezieht sich immer auf zwei Tabellen. Beim INNER JOIN werden im Abfrageergebnis nur diejenigen Datenstze angezeigt, die die Bedingung der Verknpfung erfllen.

Beispiel:

SELECT tblProjekte.ProjektID, tblProjekte.Projektbezeichnung, tblKunden.Firma FROM tblProjekte INNER JOIN tblKunden ON tblProjekte.KundeID = tblKunden.KundeID

Diese Abfrage zeigt nur Kombinationen aus Projekten und Kunden an, fr die die Abfragebedingung (tblProjekte.KundeID = tblKunden.KundeID) wahr ist.

Solche Bedingungen knnen natrlich auch ganz anders aussehen, die Verknpfung der Primrschlsselfelder ber das Gleichheitszeichen ist aber sicher die verbreitetste.

OUTER JOIN

Beim OUTER JOIN werden alle Datenstze angezeigt, die die Bedingung erfllen, und zustzlich alle Datenstze einer der beiden beteiligten Tabellen - welche das ist, legt man durch die Reihenfolge der Tabellen im SQL-Ausdruck und die Verwendung eines der beiden Schlsselwrter RIGHT JOIN oder LEFT JOIN fest.

Beispiel:

SELECT tblKunden.KundeID, tblKunden.Firma, tblProjekte.Projekt FROM tblKunden LEFT OUTER JOIN tblProjekte ON tblKunden.KundeID = tblProjekte.KundeID

Diese Abfrage gibt alle vorhandenen Kombinationen aus Kunden und Projekten aus und zustzlich alle Kunden, die nicht mit einem Projekt verknpft sind. Das Schlsselwort LEFT legt dabei die links von dem JOIN-Schlsselwort stehende Tabelle als die Tabelle fest, von der alle Datenstze angezeigt werden mssen.

Die Felder der Tabelle, die nicht zu jedem Datensatz Informationen liefert, werden einfach mit Nullwerten gefllt.

Wrden Sie hier RIGHT OUTER JOIN verwenden, wrden alle Kombinationen aus Kunden und Projekten und alle Projekte ohne Kunden ausgegeben werden - da dies in der Regel nicht vorkommt (jedes Projekt macht man ja fr irgendjemand), ergibt diese Abfrage aber keinen Sinn.

Besonderheiten

Bei der Verwendung von LEFT und RIGHT OUTER JOINs mssen Sie folgendes beachten:

Wenn Sie ein OUTER JOIN mit einer weiteren Tabelle verknpfen wollen, knnen Sie dies nur ber den Teil beziehungsweise die Tabelle der Beziehung tun, die alle Datenstze anzeigt.

Beispiel:

SELECT tblKunden.KundeID, tblKunden.Firma, tblProjekte.Projekt FROM tblKunden LEFT OUTER JOIN tblProjekte ON tblKunden.KundeID = tblProjekte.KundeID

Hier werden alle Datenstze der Tabelle tblKunden angezeigt und nur diejenigen Daten der Tabelle tblProjekte, die zu den angezeigten Kunden passen. Dementsprechend knnen Sie nur die Tabelle tblKunden mit einer weiteren Tabelle verknpfen:

SELECT tblKunden.KundeID, tblKunden.Firma, tblProjekte.Projekt, tblMitarbeiter.Nachname FROM (tblKunden LEFT OUTER JOIN tblProjekte ON tblKunden.KundeID = tblProjekte.KundeID) INNER JOIN tblMitarbeiter ON tblKunden.BetreuerID = tblMitarbeiter.MitarbeiterID

In diesem SQL-Ausdruck wird das Ergebnis der vorherigen Abfrage noch mit der Tabelle tblMitarbeiter verknpft, um den jeweiligen Sachbearbeiter fr diesen Kunden in das Abfrageergebnis einzubringen. Da die zustzliche Verknpfung ber die Tabelle tblKunden erzeugt wird, die ja den linken Teil des LEFT OUTER JOIN bildet und damit alle Datenstze anzeigt, funktioniert diese Anfrage.

Wollten Sie hier weitere Detailinformationen ber die Projekte - etwa den Projektleiter aus einer weiteren Tabelle - zustzlich ausgeben, wrde dies nicht funktionieren.

© 2003-2015 André Minhorst Alle Rechte vorbehalten.