【发布时间】:2015-10-29 00:19:38
【问题描述】:
在单个查询中,我想在来自两个不同表的两个不同列上 COUNT 和 GROUP_CONCAT。
问题是COUNT 返回的数字乘以GROUP_CONCAT 中不同项目的数量,在GROUP_CONCAT 结果中,每个不同项目都乘以 COUNT 应该返回的数字。
这是查询:
SELECT e.id, GROUP_CONCAT(c.id SEPARATOR ',') AS category_ids, COUNT(a.id) AS numberAttenders, e.event_capacity
FROM events e
LEFT JOIN attendees a ON a.event_id=e.id,
categories c,
event_categories ec
WHERE e.id=ec.event_id
AND ec.category_id=c.id
GROUP BY e.id
HAVING numberAttenders < e.event_capacity OR e.event_capacity=0
这是一个SQL Fiddle,所以这更清楚/可测试。
结果看起来像这样:
id 1
category_ids 1,2,1,2
numberAttenders 4
event_capacity 10
当我想要这样的东西时:
id 1
category_ids 1,2
numberAttenders 2
event_capacity 10
我用GROUP BY玩了一点,但还没有成功。
【问题讨论】:
-
非常感谢提供工作示例,但我强烈建议您将查询(尽最大努力)添加到问题本身。
-
我添加了查询,谢谢您的评论
标签: mysql sql group-by aggregate multiplication