我有一个相当大的数据库(我没有设计),我需要从中获取一些数据。我需要找到属于一个组织的所有用户。有一个看起来像这样的用户表;
id
name
email
password
more fields
Run Code Online (Sandbox Code Playgroud)
和这样的组织表;
id
name
org_number
contact_person
more fields
Run Code Online (Sandbox Code Playgroud)
和一个 user_orgs 表,其他表通过它关联;
id
user_id
org_id
Run Code Online (Sandbox Code Playgroud)
给定一个 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;
Run Code Online (Sandbox Code Playgroud)
连同一堆其他查询,我知道应该有 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;
Run Code Online (Sandbox Code Playgroud)