Почему мое левое соединение не возвращает нули?
В SQL Server 2008 у меня есть следующий запрос:
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
Я пытаюсь получить элементы в их подкатегориях, но я все еще хочу вернуть запись, если в категории или подкатегории нет элементов. Подкатегории, у которых нет элементов, никогда не возвращаются. Что я делаю неправильно?
Спасибо
РЕДАКТИРОВАТЬ
Модифицированный запрос со вторым левым соединением и предложением where, но он по-прежнему не возвращает нулевые значения. : /
РЕДАКТИРОВАТЬ 2
Перемещен siteid к элементу left join. Когда я делаю это, я получаю больше записей, чем ожидалось. Некоторые элементы имеют нулевой siteid, и я хочу включать их только тогда, когда они имеют определенный идентификатор.
РЕДАКТИРОВАТЬ 3
Структура таблицы:
Categories Table
-------
CategoryID
Title
SubCategories Table
-------
SubCategoryID
CategoryID
Title
ItemCategories Table
-------
ItemCategoryID
ItemID
SubCategoryID
IsActive
Items Table
--------
ItemID
Title
SiteID