yo,
Ich glaube, da hast du was durcheinander geworfen. Er will doch nicht nur die Jobs haben, die keiner gültigen jobkategorie zugeordnet sind, sondern alle Jobs. Sowohl die mit nicht mehr vorhandener jobkategorie, als auch die mit vorhandener jobkategorie, aber für diese eben nur die, bei denen die Sprache der jobkategorie de ist.
ich muss zugeben, meine beiträge zu diesem beitrag sind nicht gerade die besten. aber zum glück ist nicht alles falsch. das problem liegt nicht an orakel. wenn man die zweite tabelle nach einem wert in der WHERE klausel wie 'de' abfragt, dann kann man nicht die datensätze erhalten, die dort nur NULL werte besitzen.
will er nun alle datensatze von job, die in der jobkategorie ein 'de' eintrag haben UND alle datensätze, die keinen eintrag haben, dann muss man meine eine abfrage nach den NULL werten mit union einer zweiten abfrage mit einem INNER JOIN kombieren.
ich habe mir noch mal deine lösung angeschaut. und diese gibt auch datensätze der job tabelle wieder, die eigentlich einen anderen eintrag als 'de' in der zweiten tabelle haben, allerdings mit NULL werten aufgefüllt. vielleicht verstehe ich ja immer noch nicht, was genau er haben will. aber wenn mich nicht alles täuscht, dann alle job-datensätze mit 'de' in der zweiten tabelle und alle die keine gültige refernez mehr haben. deine abfrage solte zuviele datensätze liefern.
(
select spalten
from job j, jobkategorie jk
where j.oid_job_kategorie = jk.oid(+)
and jk.oid IS NULL
)
UNION
(
SELECT spalten
FROM job j, jobkategorie jk
WHERE j.oid_job_kategorie = jk.oid
AND jk.ch_language = 'de'
)
hinweis, die auszugebenen spalten müssen bei UNION gleich sein. so nun hoffe ich aber, dass ich diesmal meinen kopf eingeschaltet hatte....
Ilja