Mysql 连接术语为排除项的三个表

Mysql 连接术语为排除项的三个表,mysql,Mysql,我有一个涉及3个表的查询。表“project”包含我要检索的记录 3个表格: 项目 参与者: id 项目id(参考表1的id) usertable_id(参考表3的is) 用户表: id 姓氏 用户类型(“活动”或“非活动”) 我想检索所有参与者(表2)不是user_type='inactive'的项目(表1)(表3) 连接这三个表以便只检索这些项目的正确查询是什么?select*from projects p select * from projects p left join partic

我有一个涉及3个表的查询。表“project”包含我要检索的记录

3个表格:
项目

参与者:
id
项目id(参考表1的id)
usertable_id(参考表3的is)

用户表:
id
姓氏
用户类型(“活动”或“非活动”)

我想检索所有参与者(表2)不是user_type='inactive'的项目(表1)(表3)

连接这三个表以便只检索这些项目的正确查询是什么?

select*from projects p
select * from projects p 
left join participants ps on ps.project_id = p.id 
left join usertable u on ps.usertable_id = u.id 
where u.user_type <> 'inactive'
在ps.project_id=p.id上左加入参与者ps 在ps.usertable\u id=u.id上左连接usertable u 其中u.user_类型为“非活动”
使用where过滤器执行简单的连接查询

SELECT p.* 
FROM project p
LEFT JOIN participants pr ON(p.id = pr.project_id)
LEFT JOIN usertable  u ON(u.id=pr.usertable_id )
WHERE u.user_type <> 'inactive'

以更易读的方式显示表格结构我尝试了这个方法,但它仍然给了我与该项目相关的参与者处于非活动状态的记录。原因可能是每个项目都有多个参与者吗?上述查询是否考虑了这一点?@user2557039此查询将为您提供参与者不处于活动状态的项目,无论有多个参与者,如果您需要一个项目的所有参与者,即使是一个参与者,都不应该处于非活动状态,那么请告诉我,我将相应地更新我的答案是的,我指的是只有每个人都处于活动状态(或没有人处于非活动状态)的项目。我知道这很让人困惑:-)
SELECT p.* 
FROM project p
WHERE NOT EXISTS
(
SELECT 1
 FROM participants pr
JOIN usertable  u ON(u.id=pr.usertable_id )
WHERE u.user_type = 'inactive'
AND  pr.project_id= p.id 
)