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