Mysql 获取每个记录的计数

Mysql 获取每个记录的计数,mysql,sql,Mysql,Sql,我有两个表名为event和checkin 它与event.id连接到checkin.event\u id 我想获取事件中所有记录的签入中的签入数 到目前为止,我已经这样做了,它返回了值,但返回了签入表中条目的计数 我想获取每个event.id的签入次数 我怎么知道 我现在正在使用这个查询 SELECT e.id,COUNT(*) from checkin c LEFT JOIN event e ON (c.event_id=e.id) GROUP by e.id 这给了我这样的结果 eve

我有两个表名为event和checkin 它与event.id连接到checkin.event\u id 我想获取事件中所有记录的签入中的签入数

到目前为止,我已经这样做了,它返回了值,但返回了签入表中条目的计数

我想获取每个event.id的签入次数

我怎么知道 我现在正在使用这个查询

SELECT e.id,COUNT(*) from checkin c 
LEFT JOIN event e ON (c.event_id=e.id) 
GROUP by e.id
这给了我这样的结果

event_id    COUNT(*)
1             2
5             5
7             8
这很好,但我想要这样的结果

event_id    COUNT(*)
1             2
2             0
3             0
4             0
5             5
6             0
7             8
希望我的问题现在清楚了 谢谢你

你可以做你想做的事-

select event_id, count(id) 
from checkin group by event_id;
如果由于某些特定原因,您希望交叉检查事件表是否应该有相应的行,则可以按照以下步骤执行-

SELECT e.id, COUNT(c.id) 
FROM event AS e
JOIN checkin AS c ON c.event_id=e.id 
GROUP BY e.id;
SELECT e.id, COUNT(c.id) 
FROM event AS e
LEFT JOIN checkin AS c ON c.event_id=e.id 
GROUP BY e.id;
若您想显示事件id甚至不存在于签入表中,那个么您可以按照下面的操作-

SELECT e.id, COUNT(c.id) 
FROM event AS e
JOIN checkin AS c ON c.event_id=e.id 
GROUP BY e.id;
SELECT e.id, COUNT(c.id) 
FROM event AS e
LEFT JOIN checkin AS c ON c.event_id=e.id 
GROUP BY e.id;

将以下查询与计数器的别名一起使用

SELECT e.id,COUNT(c.*) as check_count from checkin c 
LEFT JOIN event e ON (c.event_id=e.id) 
GROUP by e.id

另外,我建议您使用PDO或mysqli_*函数,而不是不推荐使用的mysql_*函数

SELECT e.d, COUNT(c.event_id) AS check_count
FROM event e LEFT OUTER JOIN checkin c ON c.event_id = e.id
GROUP BY e.event_id

尝试添加COUNTe.id,以便将其与COUNT*或COUNTc.event\u id进行比较。

可能是COUNTe.id而不是COUNT*?这样,当没有匹配的事件时,将得到0而不是1。我还想知道你是否需要颠倒联接中表的顺序。你想让你的左联接反过来。@paulKienitz你是说像这样吗?选择e.id,COUNT*from event e LEFT JOIN checkin c ON e.id=c.event\u id GROUP by e.id它在每个记录中给我1。它不算。你不太可能想要一个外部连接和count*。您可能想对特定列中的非空值进行计数。@shawnt00我只想将count与事件表连接起来,以便在存储查询的数组中看到每列有多少签入。c.*出现错误。您确定mysql支持这种方式吗?请发布您看到的错误消息是什么?不,我也不希望这样做,但mysql非常宽容,所以我不确定。Sourabh可能是指c.*作为c中非空列的缩写。@Sourabh这里是错误代码1064-您的SQL语法中有一个错误;检查与您的MySQL服务器版本对应的手册,以了解使用“*作为check_count from”的正确语法