Warum gibt mein linker Join keine Nullen zurück?
In SQL Server 2008 habe ich die folgende Abfrage:
select
c.title as categorytitle,
s.title as subcategorytitle,
i.title as itemtitle
from categories c
join subcategories s on c.categoryid = s.categoryid
left join itemcategories ic on s.subcategoryid = ic.subcategoryid
left join items i on ic.itemid = i.itemid and i.siteid = 132
where (ic.isactive = 1 or ic.isactive is null)
order by c.title, s.title
Ich versuche, Elemente in ihren Unterkategorien abzurufen, möchte jedoch trotzdem einen Datensatz zurückgeben, wenn die Kategorie oder Unterkategorie keine Elemente enthält. Unterkategorien ohne Artikel werden niemals zurückgegeben. Was mache ich falsch?
Danke
BEARBEITEN
Geänderte Abfrage mit einer zweiten Left-Join- und Where-Klausel, die jedoch keine Nullen zurückgibt. : /
BEARBEITEN 2
Site-ID wurde in den linken Element-Join verschoben. Wenn ich das mache, bekomme ich weit mehr Datensätze als erwartet. Einige Elemente haben eine Null-Site-ID und ich möchte sie nur einschließen, wenn sie eine bestimmte ID haben.
EDIT 3
Tabellenstruktur:
Categories Table
-------
CategoryID
Title
SubCategories Table
-------
SubCategoryID
CategoryID
Title
ItemCategories Table
-------
ItemCategoryID
ItemID
SubCategoryID
IsActive
Items Table
--------
ItemID
Title
SiteID