【发布时间】:2011-01-30 12:03:50
【问题描述】:
我有4张桌子如下; SCHEDULE、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
欣赏任何想法/cmets。
最好的问候,本。
【问题讨论】: