Sprint
Erfahrenes Mitglied
Hallo zusammen,
ich bin mal wieder am Verzweifeln mit den JOINs.
Es gibt drei Tabellen pruefung p, kunden k und nachprf n. In Datensätze in der n sind immer mit Einträgen in der p verbunden. Es müssen keine Datensätze in der n vorhanden sein, die zu einer in p passen, es können aber auch mehrere sein. Ich suche jetzt alle Datensätze aus p, zu denen es keine Einträge in der n gibt, oder keine Einträge in denen das Feld bub gesetzt ist.
Beispiel:
pruefung
nachprf
Als Ausgabe wird also 1 und 2 erwartet.
Diese Abfrage gibt mir aber auch die 3 aus, weil es einen Eintrag mit bub = 0 gibt.
Was mach ich falsch?
ich bin mal wieder am Verzweifeln mit den JOINs.
Es gibt drei Tabellen pruefung p, kunden k und nachprf n. In Datensätze in der n sind immer mit Einträgen in der p verbunden. Es müssen keine Datensätze in der n vorhanden sein, die zu einer in p passen, es können aber auch mehrere sein. Ich suche jetzt alle Datensätze aus p, zu denen es keine Einträge in der n gibt, oder keine Einträge in denen das Feld bub gesetzt ist.
Beispiel:
pruefung
Code:
pid
1
2
3
nachprf
Code:
pruefnr bub
1 0
3 0
3 1
Als Ausgabe wird also 1 und 2 erwartet.
Diese Abfrage gibt mir aber auch die 3 aus, weil es einen Eintrag mit bub = 0 gibt.
SQL:
select distinct p.pid, k.firmenname
from kunden k, pruefung p
left outer join nachprf n
on n.pruefnr = p.pid
where substr(p.pid,1,5) = '65300'
and p.kdnr = k.kdnr
and p.basispruefung = 0
and p.status > 99
and (n.bub is null or n.bub = 0)
order by p.pid
Was mach ich falsch?