У меня есть 4 таблицы следующим образом; SCHEDULES , SCHEDULE_OVERRIDE , SCHEDULE_LOCATION_OVERRIDES и LOCATION
Мне нужно вернуть ВСЕ строки из всех таблиц, так что этот запрос выполняетсяработает нормально, добавляя значения NULL для любых значений, которые отсутствуют:
SELECT.....
FROM (schedule s LEFT JOIN schedule_override so ON so.schedule_id = s.id)
LEFT JOIN schedule_location_override slo ON slo.schedule_override_id = so.id
LEFT JOIN location l ON slo.location_id = l.id
ORDER BY s.id, so.id, slo.id, l.id
Затем мне нужно ограничить результаты в поле schedule_override end_date.Моя проблема в том, что как только я это сделаю, результаты для таблицы SCHEDULE вообще не будут возвращены.Мне нужно, чтобы все расписания были возвращены, даже если критерии переопределения end_date не выполнены.
Вот что я использую:
SELECT.....
FROM (schedule s LEFT JOIN schedule_override so ON so.schedule_id = s.id)
LEFT JOIN schedule_location_override slo ON slo.schedule_override_id = so.id
LEFT JOIN location l ON slo.location_id = l.id
WHERE so.end_date > '2011-01-30' OR so.end_date IS NULL
ORDER BY s.id, so.id, slo.id, l.id
Оцените любые мысли / комментарии.
С наилучшими пожеланиями, Бен.