繁体   English   中英

MySQL join返回从另一个表链接的不同ID

[英]MySQL join to return distinct IDs linked from another table

假设我有三张桌子:

地点 - 商店可以属于多个地点,一个地点可以有多个商店

+-------------+----------+
| LOCATION_ID | STORE_ID |
+-------------+----------+

商店 -每家商店只有一排,每家店只有一个经理ID

+----------+------------+
| STORE_ID | MANAGER_ID |
+----------+------------+

员工 -一位经理可以有多名员工,并且员工可以属于多个经理

+-------------+-------------+
| MANAGER_ID  | EMPLOYEE_ID |
+-------------+-------------+

对于给定的位置(例如LOCATION_ID = 999),我希望所有在该位置的商店管理的员工。

这样我就可以获得属于该位置商店的经理列表:

SELECT s.MANAGER_ID FROM LOCATIONS l
  INNER JOIN STORES s 
     ON s.STORE_ID = l.STORE_ID 
  WHERE l.LOCATION_ID = 999;

我真正想要的是链接到查询吐出的管理器的所有不同的EMPLOYEE_ID。

我可以在同一个查询中添加哪些附加联接来获取它?

SELECT DISTINCT E.EMPLOYEE_ID 
FROM LOCATIONS L  
INNER JOIN STORES S ON S.STORE_ID = L.STORE_ID   
INNER JOIN EMPLOYEES E ON S.MANAGER_ID = E.MANAGER_ID 
WHERE L.LOCATION_ID = 999; 

添加INNER JOIN Employees e ON s.MANAGER_ID = e.MANAGER_ID应该为您提供员工。

但我注意到你在询问如何选择所有不同的员工ID。 将SELECT子句更改为SELECT DISTINCT e.EMPLOYEE_ID ,而不是返回商店经理的ID。

RedFilter的答案很好地解释了它。 :)

SELECT e.EMPLOYEE_ID ... INNER JOIN EMPLOYEES e ON e.MANAGER_ID = s.MANAGER_ID ...

您可以在员工ID之前添加DISTINCT关键字,但是,如果数据已正确规范化,则没有必要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM