选择行名称中一个值出现在多行中的行

时间:2019-01-17 06:13:57

标签: php mysql sql pdo

假设我有一个这样的数据库结构。

users

id    name    
1     Name1   
2     Name2   
3     Name3   
4     Name4   

还有另一个表logs

id    userid
1     1
2     1      
3     2
4     3
5     3
6     3
7     4
8     4
9     4

现在,如果我在文本框中输入3并按Submit,那么在服务器端PHP中,我需要从users表中提取记录,并显示id 3和4,即{中的Name3和Name4与users表中的{1}}表一样,它们分别出现3次。同样,如果我按2并提交,则应该提取并显示记录Name1,因为logs表中的id 1已在日志表中出现2次。这里的查询应该是什么?我不知道如何开始,因此无法发布尝试过的内容。请帮忙。

3 个答案:

答案 0 :(得分:2)

尝试此查询,它可以正常工作

select name from users where id in (select userid from logs  group by userid having count(userid) = '".$inputvalue."')

DEMO LINK

答案 1 :(得分:0)

按用户分组,并且仅接受具有您输入的记录计数的那些分组

select u.name
from users u
join logs l on l.userid = u.id
group by u.name
having count(l.id) = $inputValue

Demo

答案 2 :(得分:0)

这将为您工作。

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