尝试根据不同的表打印编写计数查询循环

我有两张桌子:


access(name, id, check, key)


events(name, key, event_name)

我正在尝试将这些表中的一些内容打印到包含这些列的 php/html 表中:


name, key, event_name, access count

我的麻烦是我希望每个事件都显示具有相同键的访问行的“计数”。


事件表示例:


name  key  event_name

test  1  first

joe  2  second

和访问表...


name  id  check  key

test  123  yes  1

test  1235  yes  1

joe  175  yes  2

joe  852  yes  2

test  5843  yes  1

test  123455  yes  1

结果表我希望看起来像这样:


name  key  event_name  access count

test  1  first  4

joe  2  second  2

有人知道怎么做这个吗?我已经做到了,但它显然不起作用,因为密钥没有提供给内部选择查询......


select event_name, name, key, 

       (SELECT COUNT(key) FROM access WHERE key=key AND name=name) 

from event;

感谢任何看过并可能有任何想法的人!我盯着这个和 w3schools 看了几个小时


人到中年有点甜
浏览 105回答 2
2回答

慕侠2389804

目前您的子查询将返回所有行的计数,因为它与主查询不相关,因此两次出现的keyinkey=key将引用同一列并且表达式将始终为真(同样 for name)。要关联子查询,请添加表引用:select event_name, name, key,         (SELECT COUNT(key) FROM access a WHERE a.key=e.key AND a.name=e.name) AS `access count`        from event e

青春有我

您还可以通过连接和聚合获得相同的结果:select e.name, e.key, e.event_name, count(*) access_countfrom event eleft join access a on a.key = e.key and a.name = e.namegroup by e.name, e.key, e.event_name
打开App,查看更多内容
随时随地看视频慕课网APP