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

标签 mysql sql mariadb

我有一个相当大的数据库(不是我设计的),我需要从中获取一些数据。我需要找到属于某个组织的所有用户。有一个用户表,如下所示;

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/

相关文章:

php - 将 mysql 存储的点放在谷歌地图上

mysql - 如何在 Spring Data JPA 排序中定义空处理?

mysql - 如何让 MySQL 优化器在加入时首先使用我的索引?

mariadb - 当我尝试在 php 7 平台上的查询上添加变量时出现错误

MySQL:ORDER BY 显着减慢了查询速度

MySQL:按日期接近分组?

php - 使用php创建动态树

php - 如何查询介于两个日期之间的数据?

c# - sql数据源超时错误

mysql - 无法解锁 MariaDB 10.2 中的表