我有一个包含两个表的数据库:event和session(一个事件有多个会话)。
我正在构建一个查询,我想列出事件名称及其对应的第一个会话日期和上一个会话日期,以便用户可以看到范围。
问题是如果会话表没有事件的任何记录,事件未包含在结果集中(range_start和range_finish应为NULL)。
如何修复我的查询以包含事件表中的所有记录,即使它没有任何会话?
SELECT e.id, e.name, MIN(s.date_start) AS range_start, MAX(s.date_finish) AS range_finish
FROM `event` AS e
LEFT JOIN `session` AS s
ON e.id = s.event_id
WHERE s.hidden != 1
答案 0 :(得分:2)
SELECT e.id, e.name, MIN(s.date_start) AS range_start, MAX(s.date_finish) AS range_finish
FROM `event` AS e
LEFT JOIN `session` AS s
ON e.id = s.event_id
WHERE (s.hidden != 1)
OR s.hidden IS NULL
假设s.hidden自然不能为空。