我在DB下表下使用mysql GROUP_CONCAT和WHERE
EVENT
ID, TITLE, ...
票数
ID, TYPE, ID_EVENT
评论
个ID, COMMENT, ID_EVENT
DATES
ID, DATE, ID_EVENT
一个事件有许多动作,有许多意见和有许多日期。
我使用以下查询从EVENTS表中检索信息,并为每个事件检索投票数,评论数和每个日期。对于他们的最新的一个事件=明日(2015年4月3日)
SELECT events.id,
events.title,
GROUP_CONCAT(dates.date) AS dates,
COUNT(distinct votes.id) AS votes,
COUNT(distinct comments.id) AS comments
FROM events
LEFT JOIN dates on dates.post_id = events.id
LEFT JOIN votes on votes.post_id = events.id AND votes.type = 1
LEFT JOIN comments on comments.votes_id = votes.id
WHERE dates.date = CURDATE() + INTERVAL 1 DAY
GROUP BY events.id
结果看起来像这样
id title dates votes comment
33 Event33 2015-04-03,2015-04-03,2015-04-03 4 0
39 Event39 2015-04-03 9 1
为什么日期栏重复同日(明天)??? Event33的日期应为2015-04-01,2015-04-02,2015-04-03。
出了什么问题?
你可能想'GROUP BY events.id'和使用'里面distinct'的' GROUP_CONCAT()',正如你对'COUNT()' – 2015-04-02 20:02:50
所做的那样,对不起ypercube,这个小组写的是一个错误。我编辑它。查询工作正常,没有列出所有事件的WHERE子句。但是,当我添加where子句来按日期过滤 – user3670128 2015-04-02 20:50:31