[英]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.