Php 尝试基于不同的表打印写入计数查询循环
我有两张桌子:Php 尝试基于不同的表打印写入计数查询循环,php,mysql,sql,group-by,count,Php,Mysql,Sql,Group By,Count,我有两张桌子: 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 chec
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查询
select event_name, name, key,
(SELECT COUNT(key) FROM access WHERE key=key AND name=name)
from event;
谢谢大家的关注,并可能有任何想法!我已经盯着这个和w3schools看了几个小时了目前,您的子查询将返回所有行的计数,因为它与主查询不相关,因此key in key=key的两次出现都将引用同一列,并且name的表达式也将始终为true。要关联子查询,请添加表引用:
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
目前,子查询将返回所有行的计数,因为它与主查询不相关,因此两次出现的key in key=key将引用同一列,并且对于name,表达式将始终为true。要关联子查询,请添加表引用:
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_count
from event e
left join access a on a.key = e.key and a.name = e.name
group by e.name, e.key, e.event_name
您还可以通过连接和聚合获得相同的结果:
select e.name, e.key, e.event_name, count(*) access_count
from event e
left join access a on a.key = e.key and a.name = e.name
group by e.name, e.key, e.event_name
谢谢你@Nick的解释。这很有意义,指定哪个键是哪个键以及所有键。我修改了我的查询,当我在HeidiSQL中运行它时,我得到了我想要的结果。出于某种原因,当我将精确的查询复制/粘贴到php代码中时,该表正在填充除计数之外的所有内容的正确值,这两个单元格中的每一个都显示为1,而不是计数2和4。我还有一个晚上的问题!感谢您的帮助。@Amarotica很奇怪,它可以直接在SQL中工作,但不能在PHP中工作。是时候问另一个问题了?不管怎样,我很高兴我能帮上忙。结果我只是需要好好休息一下。我遇到的PHP问题是因为我将测试数据输入到托管数据库中,而不是我为测试设置的本地数据库,因此给了我一个错误的问题,即我看到的输出是错误的。facepalm@Amarotica去过那里,做了那件事!我很高兴事情很简单…谢谢你@Nick的解释。这很有意义,指定哪个键是哪个键以及所有键。我修改了我的查询,当我在HeidiSQL中运行它时,我得到了我想要的结果。出于某种原因,当我将精确的查询复制/粘贴到php代码中时,该表正在填充除计数之外的所有内容的正确值,这两个单元格中的每一个都显示为1,而不是计数2和4。我还有一个晚上的问题!感谢您的帮助。@Amarotica很奇怪,它可以直接在SQL中工作,但不能在PHP中工作。是时候问另一个问题了?不管怎样,我很高兴我能帮上忙。结果我只是需要好好休息一下。我遇到的PHP问题是因为我将测试数据输入到托管数据库中,而不是我为测试设置的本地数据库,因此给了我一个错误的问题,即我看到的输出是错误的。facepalm@Amarotica去过那里,做了那件事!我很高兴这是件简单的事。。。