如何让min和max date小于今天的mysql

时间:2016-03-31 07:45:04

标签: mysql

我需要mysql语句的帮助。 我有2个表,一个包含事件详细信息,另一个包含事件日期。

我需要显示今天或之后结束的所有活动日期。

我有一个具有以下日期的活动: 29/03/2016 30/03/2016 31/03/2016

我尝试了这个查询:

SELECT a.event_id, event_name, event_location, event_desc,
MIN(a.event_date) AS from_date, MAX(a.event_date) AS to_date
FROM event_time a
LEFT JOIN event_time b
ON b.event_id = a.event_id
JOIN events c
ON a.event_id = c.event_id
WHERE b.event_date <= NOW()
GROUP BY a.event_id

但是在from_date字段中,我只获得了31/03/2016。

任何人都可以帮助我根据需要建立正确的陈述吗?

谢谢

1 个答案:

答案 0 :(得分:2)

嗯,你问的是缺少一些信息,所以如果我理解正确,你不需要加入两次到event_times:

SELECT a.event_id, event_name, event_location, event_desc,
       MIN(a.event_date) AS from_date, MAX(a.event_date) AS to_date
FROM event_time a
JOIN events c
 ON a.event_id = c.event_id
WHERE a.event_date >= NOW()
GROUP BY a.event_id

我已将where子句更改为

a.event_date >= NOW()

因为你说你的日期要大于或等于今天的日期,但是现在我正在查看你的主题,我看到你写了相反的内容,所以如果你不小,请转过来。

此外,一般来说,你是LEFT JOINING到event_time b,你在where子句中有:

WHERE b.event_date <= NOW()

这会自动将连接转换为内连接,right表上的过滤器应仅在ON子句中。在你的情况下:

LEFT JOIN event_time b
 ON b.event_id = a.event_id AND
    b.event_date <= NOW()