gpt4 book ai didi

MYSQL 返回有多少人记录了一个事件

转载 作者:行者123 更新时间:2023-11-29 09:59:29 25 4
gpt4 key购买 nike

https://imgur.com/O1v3O8w

上图显示了我的第一个名为 events 的表。

https://imgur.com/7Hbsitl

上表链接到事件表,用于检查用户是否记录事件。我想在显示事件详细信息时获取每个事件的记录数量。我遇到的问题是,如果事件有 0 条日志,它将不会出现在输出中。

这是使用的sql:

SELECT event.`eventid`,
event.`name`,
`eventtime`,
`location`,
`datecreated`,
`dateofevent`,
`categoryname`,
`description`,
Count(participantlogs.eventid)
FROM event,
recreationalcategory,
participantlogs
WHERE recreationalcategory.categoryid = event.categoryid
AND participantlogs.eventid = event.eventid
GROUP BY event.eventid

任何帮助将不胜感激!

最佳答案

放弃连接操作的老式逗号语法,并使用 JOIN 关键字,将连接谓词重新定位到 ON 子句。可以将 JOIN 关键字修改为 LEFTRIGHT 关键字,以允许外部连接。

外部联接将返回没有匹配项的行;正是所描述的用例。

SELECT e.eventid
, e.name
, COUNT(p.eventid)
FROM event e
LEFT
JOIN recreationalcategory c
ON c.categoryid = e.categoryid
LEFT
JOIN participantlogs p
ON p.eventid = e.eventid
GROUP
BY e.eventid
, e.name
<小时/>

另一种替代方法是在 SELECT 列表中使用相关子查询而不是联接。假设eventidevent表中的PRIMARY KEY或UNIQUE KEY,我们可以消除GROUP BY子句...

SELECT e.eventid
, e.name
, ( SELECT COUNT(1)
FROM participantlogs p
WHERE p.eventid = e.eventid
) AS cnt
FROM event e
LEFT
JOIN recreationalcategory c
ON c.categoryid = e.categoryid

关于MYSQL 返回有多少人记录了一个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53289137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com