MySQL查询以获取属于某个组织的所有用户

MySQL查询以获取属于某个组织的所有用户,mysql,sql,mariadb,Mysql,Sql,Mariadb,我有一个相当大的数据库(不是我设计的),我需要从中获取一些数据。我需要找到属于某个组织的所有用户。有一个用户表,看起来像这样 id name email password more fields 和这样的组织表 id name org_number contact_person more fields 以及用户组织表,其他表通过该用户组织表相互关联 id user_id org_id 给定一个组织编号,我希望能够获得该组织中每个用户的姓名和电子邮件地址 我试过了 SELECT pe

我有一个相当大的数据库(不是我设计的),我需要从中获取一些数据。我需要找到属于某个组织的所有用户。有一个用户表,看起来像这样

id
name
email
password
more fields
和这样的组织表

id
name
org_number
contact_person
more fields
以及用户组织表,其他表通过该用户组织表相互关联

id
user_id
org_id
给定一个组织编号,我希望能够获得该组织中每个用户的姓名和电子邮件地址

我试过了

SELECT 
   per.name, 
   per.email, 
   org.name AS orgname, 
   org.org_number, 
   org.contact_person 
FROM users AS per 
LEFT JOIN user_orgs AS uorgs 
ON per.id=uorgs.org_id 
LEFT JOIN organization AS org 
ON uorgs.org_id=org.id 
WHERE org.org_number=123456;
还有一系列其他查询,我知道应该有20个用户注册到组织编号123456,但它返回空


我如何才能做到这一点?

您的
加入条件看起来不正确:

SELECT u.name, u.email, 
       o.name as orgname, o.org_number, o.contact_person 
FROM users u JOIN
     user_orgs uo 
     ON u.id = uo.user_id JOIN
------------------^  -- this changes
     organization o
     ON uo.org_id = o.id 
WHERE o.org_number = 123456;

ON per.id=uorgs.org_id
=>将用户表加入到用户id与地图组织id匹配的地图?为什么离开加入组织?@Akina显然是因为我不知道自己在做什么。。。这就是我寻求帮助的原因。谢谢你提出的有用的问题。@JimiWindmills答案中的加入是内部的(因为
组织的条件应用于WHERE)-因此使用LEFT而不是INNER对服务器来说是额外的、无意义的工作。@Akina感谢你的解释。学东西总比被问我为什么做错了好。