SQL: Hinzufügen von Verknüpfungen zu einer Abfrage ohne Beeinträchtigung anderer Verknüpfungen

Aus DBWiki
Wechseln zu: Navigation, Suche

Zurück zur Übersicht



Dies erreicht man durch Verwendung von Outer Joins, weil diese sowohl alle übereinstimmenden Datensätze, als auch nicht übereinstimmende Datensätze in Form von Null-Werten ausgeben. Es können auch Unterabfragen, die einen Einzelwert zurückliefern, verwendet werden. Da diese jedoch für jeden Datensatz ausgeführt werden müssen, ist ihre Performance in der Regel aber schlechter als die Verwendung der ersten Form.

Für das neue Szenario wird eine weitere Tabelle benötigt, die im folgenden als praemie aufgeführt wird, und nach folgendem Muster manuell oder per Code angelegt werden muss:

ma_nr ausgezahlt typ
7369 14.03.2005 1
7900 14.03.2005 2
7788 14.03.2005 3

Lösung für Jet-SQL

Hinweis für Access-Anwender
Um die folgenden Abfragen selbst testen zu können, müssen die Tabellen der Übungsdatenbank vorhanden sein.


In einer Abfrage soll nun der Mitarbeiter, der Ort der Abteilung und das Datum der Prämienauszahlung angezeigt werden. Folgende Abfrage führt zum gewünschten Ergebnis:

SELECT ma_name,
       abt_name,
       ausgezahlt
FROM   ( abteilung AS a
         INNER JOIN mitarbeiter AS m
                 ON a.abt_nr = m.abt_nr )
       LEFT JOIN PRAEMIE AS p
              ON m.ma_nr = p.ma_nr
Wiki hinweis.png

Anmerkung: Nur in Access müssen diese bei mehr als einem JOIN jeweils entsprechend ihrer Reihenfolge geklammert werden.


Lösung für andere SQL-Dialekte

SELECT ma_name,
       abt_name,
       ausgezahlt
FROM   abteilung AS a
       JOIN mitarbeiter AS m
         ON a.abt_nr = m.abt_nr
       LEFT JOIN PRAEMIE AS p
              ON m.ma_nr = p.ma_nr
ma_name abt_name ausgezahlt
Schmidt Forschung 14.03.2005
Allard Verkauf (Null)
Wecker Verkauf (Null)
Johann Forschung (Null)
Mertens Verkauf (Null)
Blank Verkauf (Null)
Kühne Buchhaltung (Null)
Scheidt Forschung 14.03.2005
König Buchhaltung (Null)
Dreher Verkauf (Null)
Adam Forschung (Null)
Jakobs Verkauf 14.03.2005
Fuhrmann Forschung (Null)
Müller Buchhaltung (Null)



Zurück zur Übersicht