У меня есть две таблицы: tblEntities и tblScheduling.
tblEntities:
EntityID ShortName Active
1 Dirtville 1
2 Goldtown 1
3 Blackston 0
4 Cornfelt 1
5 Vick 1
tblScheduling:
ScheduleID EntityID SchedulingYearID
1 1 20
2 1 21
3 2 20
4 3 19
5 5 20
Мне нужен запрос, который покажет ALL ACTIVE Объекты и информацию о их расписании для определенного ScheduleYearID.
Выходные данные должны выглядеть следующим образом (в данном случае желаемый SchedulingYearID равен 20):
EntityID ScheduleID
1 1
2 3
4 NULL
5 5
Запрос, который я написал до сих пор:
SELECT tblEntities.EntityID, tblEntities.ShortName, tblScheduling.ScheduleID
FROM tblScheduling RIGHT OUTER JOIN
tblEntities ON tblScheduling.EntityID = tblEntities.EntityID
WHERE (tblScheduling.SchedulingYearID = @SchedulingYearID)
AND (tblEntities.Active = 1)
ORDER BY tblEntities.EntityID
Моя проблема заключается в том, что при использовании этого запроса он не будет включать активные объекты без информации о расписании (например, EntityID 4 в приведенном выше примере). Я могу написать запрос для отображения всех активных объектов и их состояния расписания, но как только я начну ограничивать его через SchedulingYearID, я потеряю эти конкретные объекты.
Существуют ли какие-либо решения, которые я, очевидно, упускаю, не прибегая к подзапросам, курсорам и т. Д.? Если нет, то это не имеет большого значения, я просто чувствую, что упускаю что-то простое здесь.