select auf leere felder nach left join

NeoPrince

Aktiver Benutzer
Beiträge
34
Hi zusammen
ich habe folgende anforderung bei einer Datenbankabfrage:
  • 2 Tabellen 1:Eigenschaften 2:Eigenschaften_Kategorie.
  • In der Eigenschaften Kategorie wir die ID einer Eigenschaft einer Kategorie zugewiesen.
  • es ist möglich dass Eigenschaften in keiner Kategorie zugewiesen sind.
wenn ich nun alle eigenschaften einer bestimmten Kategorie sehen möchte mache ich das mit folgender Abfrage:

Code:
select   
Eigenschaften.eigenschaft as eigenschaft,
Eigenschaften.id as eigenschaft_id,
Eigenschaften_Kategorie.kategorie as kategorie_id                   
                   
from Eigenschaften               
                   
right join Eigenschaften_Kategorie on
Eigenschaften_Kategorie.eigenschaft=Eigenschaften.id
                   
Where Eigenschaften_Kategorie.kategorie=KATEGORIEID

Funktioniert wunderbar.
Möchte ich alle Eigenschaften die nicht in einer bestimmten Kategorie sind, macht mein Script einfach != in der WHERE. Dann bekomme ich aber nur die, die schon irgendeiner anderen Kategorie zugeordnet sind.
Die, die noch keiner Kategorie zugeordnet sind ergeben bei einer Abfrage ohne das Where in der Spalte Kategorie_ID ein NULL.

Wie bekomme ich auch die mit NULL. oder habe ich einen föllig falschen Ansatz?
Die genaue SQL Server version kenne ich leider nicht

Danke im vorraus Gruß Neo
 
Werbung:
Zunächst mal musst du deinen RIGHT JOIN in einen LEFT JOIN ändern um ohne eine WHERE Bedingung auch alle Datensätze zu bekommen und dann ergänzen wir !=KATEGORIEID noch etwas.
Code:
select 
Eigenschaften.eigenschaft as eigenschaft,
Eigenschaften.id as eigenschaft_id,
Eigenschaften_Kategorie.kategorie as kategorie_id                 
                 
from Eigenschaften             
                 
LEFT join Eigenschaften_Kategorie on
Eigenschaften_Kategorie.eigenschaft=Eigenschaften.id
                 
Where Eigenschaften_Kategorie.kategorie!=KATEGORIEID
OR        Eigenschaften_Kategorie.kategorie IS NULL
 
Oh neeein

Das mit dem right hatte ich nur falsch kopiert. ich hatte schon left.
Aber dass ich nur noch mit OR ein NULL dranhängen muss, da hätte ich auch selber drauf kommen können.

Vielen Dank für die Schnelle Hilfe

gruß Neo

PS: Warum zur hölle ist NULL nicht (nicht 2) wobei 2 hier die KATEGORIEID ist...
 
Werbung:
Zurück
Oben