SQL JOIN auf nicht vorhandene Datensätze möglich?

Dsimon24

Lieutenant
Registriert
Aug. 2016
Beiträge
595
Hallo zusammen,

ich versuche mittels eines JOINS zwei Tabellen zu verbinden,
und diese im Anschluss daran auszugeben.

SQL:
SELECT
a.id, a.vorname, a.nachname,
b.id, b.persId, b.wert1, b.wert2
FROM a JOIN b ON b.persId = a.id
WHERE vorname = 'Hans'
AND wert1 = 0;

So erhalte ich alle Datensätze aus den beiden Tabellen der Personen,
die Hans heißen und in wert1 (das ist ein Int-Feld) eine 0 stehen haben.

Jetzt möchte ich aber nur die Datensätze der Leute mit dem Namen
Hans anzeigen, zu denen es in der Tabelle b gar keinen Eintrag gibt.

Lässt sich das realisieren?
Falls ja, wie könnte ich das am besten machen?

Hintergrund:
In Tabelle 1 sind bspw. Käufe hinterlegt. In Tabelle b sind zu den Käufen geschriebene
Rechnungen hinterlegt. Gibt nun aber auch die Fälle, bei denen es zu den Käufen noch
gar keine Rechnungen gibt - daher noch kein Datensatz in Tabelle b vorhanden ist.

Es wäre top, wenn ich genau diese anzeigen kann. Ich könnte es auch mit einem anderen
DB-Design umsetzen - da dies aber bereits existiert wäre es schön, wenn´s auch in dieser
Form gehen würde.

VG :)
 
Die Datensätze für die in der zweiten Tabelle kein Eintrag existiert kriegst du in die Ergebnismenge mit rein wenn du einen LEFT OUTER JOIN machst. Dann musst du noch im WHERE mit b.persId IS NULL prüfen welche Datensätze in der zweiten Tabelle keinen Daten enthalten.
 
Mach "left join" anstelle von "join" (dann holt er alle aus "a", auch die die nicht in b gefunden werden und mach beim "where" noch rein:

"and b.wert1 is null
 
Zurück
Oben