I have a fairly large database (that I didn’t design) that I need to get some data from. I need to find all users belonging to an organization. There is a users table that looks like this;
x
id
name
email
password
more fields
and an organisation table like this;
id
name
org_number
contact_person
more fields
and a user_orgs table through which the other tables are related;
id
user_id
org_id
Given an org_number, I would like to be able to get the name and email address of each user in that organization.
I have tried
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;
Along with a bunch of other queries and I know there should be 20 users registered to the organization number 123456, but it returns empty.
How can I do this?
Advertisement
Answer
Your JOIN
conditions do not look correct:
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;