Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查找子项在多行上匹配的父项_Sql_Postgresql - Fatal编程技术网

SQL查找子项在多行上匹配的父项

SQL查找子项在多行上匹配的父项,sql,postgresql,Sql,Postgresql,我有一个数据库,其中一个用户有多个提交,一个提交有多个帖子 我想找到所有使用标签“car”和标签“bike”发布帖子的用户 以下是我尝试过的查询,它无法运行,因为它只查找一个标签为“car”和“bike”的帖子 如何正确构造此查询,使其返回使用标记“car”发表文章和使用标记“bike”发表文章的用户?如果您只需要名称,可以尝试使用count distinct=和tag=card或tag=bike检查用户 select u.name from users inner join submi

我有一个数据库,其中一个
用户
有多个
提交
,一个
提交
有多个
帖子

我想找到所有使用标签“car”和标签“bike”发布帖子的用户

以下是我尝试过的查询,它无法运行,因为它只查找一个标签为“car”和“bike”的帖子


如何正确构造此查询,使其返回使用标记“car”发表文章和使用标记“bike”发表文章的用户?

如果您只需要名称,可以尝试使用count distinct=和tag=card或tag=bike检查用户

select  u.name 
from  users 
inner join submission s on u.name = s.user_name
inner join post rp on s.id = rp.submission_id
where rp.tag = 'car' OR rp.tag = 'bike'
group by u.name 
having count(distinct  rp.tag) = 2 
如果您需要所有用户信息,则应将此结果与用户一起加入

select u.*
from users u 
inner  join  (
  select  u.name 
  from  users 
  inner join submission s on u.name = s.user_name
  inner join post rp on s.id = rp.submission_id
  where rp.tag = 'car' OR rp.tag = 'bike'
  group by u.name 
  having count(distinct  rp.tag) = 2 
) t on t.name  = u.name
select u.*
from users u 
inner  join  (
  select  u.name 
  from  users 
  inner join submission s on u.name = s.user_name
  inner join post rp on s.id = rp.submission_id
  where rp.tag = 'car' OR rp.tag = 'bike'
  group by u.name 
  having count(distinct  rp.tag) = 2 
) t on t.name  = u.name