簡體   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