SQL: Gemeinsame Datensätze in zwei Tabellen ermitteln

Aus DBWiki
Wechseln zu: Navigation, Suche

Zurück zur Übersicht



Stehen nur einige Teilinformationen von Datensätzen zur Verfügung, so kann eine Verknüpfung über alle bekannten bzw. notwendigen Felder mittels INNER JOIN oder WHERE-Klausel erzielt, und die fehlenden Informationen ermittelt werden.

Allgemeine Lösung

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


Lege zur Simulation einer zweiten Tabelle eine Abfrage q mit diesem Inhalt an:

SELECT ma_name, job, gehalt
FROM   mitarbeiter
WHERE  job = 'Sachbearbeiter'

Das liefert dann folgende Daten:

ma_name job gehalt
Schmidt Sachbearbeiter 800
Adam Sachbearbeiter 1100
Jakobs Sachbearbeiter 950
Müller Sachbearbeiter 1300

Lösung mittels WHERE-Klausel:

SELECT ma_nr, m.ma_name, m.job, m.lohn, m.abt_nr
FROM   mitarbeiter AS m,
       q
WHERE  m.ma_name = q.ma_name AND
       m.job = q.job AND
       m.gehalt = q.gehalt

Lösung mittels INNER JOIN:

SELECT ma_nr, m.ma_name, m.job, m.gehalt, m.abt_nr
FROM   mitarbeiter AS m
       INNER JOIN q
               ON ( m.ma_name = q.ma_name ) AND
                  ( m.job = q.job ) AND
                  ( m.gehalt = q.gehalt )
Wiki hinweis.png

Anmerkung: Ohne Einzelklammerung ist der INNER JOIN in Access auch gültig. Er kann dann jedoch vom QBE-Editor nicht mehr richtig angezeigt werden.
... ON ( Ausdruck1 AND Ausdruck2 AND Ausdruck3 )


ma_nr ma_name job gehalt abt_nr
7369 Schmidt Sachbearbeiter 800 20
7876 Adam Sachbearbeiter 1100 20
7900 Jakobs Sachbearbeiter 950 30
7934 Müller Sachbearbeiter 1300 10



Zurück zur Übersicht