Php 选择字段名中的一个值出现在多行中的行
假设我有一个这样的数据库结构 表Php 选择字段名中的一个值出现在多行中的行,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,假设我有一个这样的数据库结构 表用户 id name 1 Name1 2 Name2 3 Name3 4 Name4 和另一个表日志 id userid 1 1 2 1 3 2 4 3 5 3 6 3 7 4 8 4 9 4 现在,如果我在文本框中输入3并按submit,那么在服务器端PHP中,我需要从用户表中获取并显示id为3和4的
用户
id name
1 Name1
2 Name2
3 Name3
4 Name4
和另一个表日志
id userid
1 1
2 1
3 2
4 3
5 3
6 3
7 4
8 4
9 4
现在,如果我在文本框中输入3并按submit,那么在服务器端PHP中,我需要从
用户
表中获取并显示id为3和4的记录,即用户
表中的Name3和Name4,就像在日志
表中一样,它们每次出现3次。类似地,如果我按2并提交,它应该从users
表中获取并显示记录Name1,作为id
1,该表在logs表中已经出现了2次。这里的查询应该是什么?我不明白如何从这个开始,所以我不能发布我已经尝试过的东西。请提供帮助。按用户分组,只取具有您输入的记录计数的组
select u.name
from users u
join logs l on l.userid = u.id
group by u.name
having count(l.id) = $inputValue
尝试此查询,它正在工作
select name from users where id in (select userid from logs group by userid having count(userid) = '".$inputvalue."')
这对您很有用
Select u.name
from ( select userid,count(*) as NoOfRecords
from logs
group by userid
having count(*) = $inputvalue ) as a
inner join users u on a.userid = u.id
GROUPBY需要位于“l.userid”上,显然,您必须更改选择列表。所以重建查询。不,它不是。@Muhammad Waheed:如果name
在users表中不是唯一的,那就很奇怪了。如果是这样,那么请求的查询结果将变得毫无意义,因为两个用户的名字相等,我们就不知道它是哪一个。(此外:即使我们按id
分组,我们仍然可以选择name
,因为后者在功能上依赖于前者。)@juergend现在明白了吗?Thorsten你就是right@Muhammad瓦希德:嗯。。。实际上,我要说的是支持juergen d的声明,而不是你的。它将计算所有用户ID列而不是分组用户。我最喜欢的答案。您从用户表中选择名称,并在其所属的位置设置条件:在where
子句中。@SayedMohdAli您后来编辑了它,并在子查询中添加了group by。。。现在很明显,它会像我想要的那样完美。非常感谢。