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