Abfrage über 2 Tabellen / Ausgabe von Zeilen ohne Treffer

ukyo184

Mitglied
Hallo,

ich habe mich bei der Benennung des Titels ein wenig schwer getan. Ebenso bei der Suche hier im Forum nach einer geeigneten Lösung. Ich muss das ganze etwas beschreiben.

Folgender Fall. In unserer Datenbank sind unsere Mitarbeiter in einer Tabelle erfasst. Zu den jeweiligen Mitarbeitern werden arbeitsmedizinische Vorsorgeuntersuchungen in einer zweiten Tabelle erfasst. Nun möchte ich eine Liste erstellen, bei der mir alle aktiven Mitarbeiter mit den jeweiligen Vorsorgeuntersuchungen angezeigt werden, und zwar auch die, die keine Untersuchung haben. Bei denen die keine Untersuchung haben, sollte die Spalte einfach leer sein.

Ich bekomme es bislang aber nur so hin, dass mir alle Mitarbeiter angezeigt werden die eine Vorsorgeuntersuchung haben und zwar mit folgender Abfrage:

Code:
SELECT p.nachname, p.vorname, v.vorsschl, v.vondatum, v.bisdatum, v.sbemerkung
FROM personal p, persvorsorge v
WHERE p.personalnr=v.personalnr 
AND (p.austritt1>=[Heute] or p.austritt1 IS NULL) 
OR ((p.austritt2>=[Heute] or p.austritt2 IS NULL) and p.eintritt2 IS NOT NULL) 
ORDER BY p.nachname
Könnt ihr mir bitte weiterhelfen? Wie bekomme ich die Anzeige auch der Mitarbeiter hin, die keine Untersuchung haben?

Vielen Dank

Bei der Datenbank handelt es sich um Firebird 1.5.

Gruß Ukyo
 
Vielen Dank Chefkoch. Das hat mir weitergeholfen. Die Lösung lautet jetzt:

Code:
SELECT p.nachname, p.vorname, v.vorsschl, v.vondatum, v.bisdatum, v.sbemerkung
FROM personal p LEFT JOIN persvorsorge v ON (p.personalnr=v.personalnr)
WHERE (p.austritt1>=[Heute] or p.austritt1 IS NULL) 
OR ((p.austritt2>=[Heute] or p.austritt2 IS NULL) and p.eintritt2 IS NOT NULL) 
ORDER BY p.nachname

Nun werden auch die Mitarbeiter ohne Vorsorgeuntersuchung angezeigt. Der einzige kleine Schönheitsfehler ist der, dass die erste Zeile bei dem Ergebnis der Abfrage komplett leer ist - warum auch immer.

Gruß Ukyo
 

Neue Beiträge

Zurück