我有一个相当大的数据库(不是我设计的),我需要从中获取一些数据。我需要找到属于某个组织的所有用户。有一个用户表,如下所示;
id
name
email
password
more fields
和这样的组织表;
id
name
org_number
contact_person
more fields
以及一个 user_orgs 表,通过它与其他表相关;
id
user_id
org_id
给定一个 org_number,我希望能够获取该组织中每个用户的姓名和电子邮件地址。
我已经尝试过
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,但它返回空。
我该怎么做?
最佳答案
您的 JOIN
条件看起来不正确:
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;
关于MySQL 查询获取属于某个组织的所有用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60829789/