簡體   English   中英

MySQL 加入多個(多於2個)有條件的表

[英]MySQL Join Multiple (More than 2) Tables with Conditions

假設我有 4 張桌子:

表 1: Task

ID     Task            Schedule
1      Cut Grass         Mon
2      Sweep Floor       Fri
3      Wash Dishes       Fri

表 2: Assigned

ID     TaskID (FK)     PersonID (FK)
1          1                1
2          1                2
3          2                3
4          3                2

表 3: Person

ID     Name
1      Tom
2      Dick
3      Harry

表 4: Mobile

ID     PersonID (FK)     CountryCode     MobileNumber
1          1                 1           555-555-5555
2          2                44           555-555-1234
3          3                81           555-555-5678
4          3                81           555-555-0000

我正在嘗試顯示

  1. 某天的任務
  2. 分配給任務的人員姓名
  3. 上述人員的電話號碼

我認為它應該類似於以下內容,但我不確定如何設置條件以正確限制結果:

SELECT T.ID, T.Task, P.Name, M.MobileNumber
FROM Task AS T
LEFT JOIN Assigned AS A
     ON T.ID = A.TaskID
LEFT JOIN Person AS P
     ON A.PersonID = P.ID
LEFT JOIN Mobile AS M
     ON M.PersonID = P.ID
WHERE T.Schedule = Fri

我的目標是獲取以下信息(顯示方式不同):

Tasks                        Name             MobileNumber
Sweep Floor, Wash Dishes     Dick, Harry      44-555-555-1234, 81-555-555-5678, 81-555-555-0000

當然,如果 JOIN 是錯誤的做法,請說出來。

目前尚不清楚在這種情況下您要如何處理重復數據,但您應該考慮使用內部聯接而不是外部聯接,並使用諸如 group_concat() 之類的東西來組合電話號碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM