MySQL加入多个(超过2个)带条件的表

时间:2011-07-17 03:51:52

标签: mysql join

假设我有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. 该人的电话号码
  4. 我认为它应该类似于以下内容,但我不确定如何设置条件以便正确限制结果:

    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是错误的方法,请说出来。

1 个答案:

答案 0 :(得分:1)

目前还不清楚在这种情况下你想要对重复数据做什么,但你应该考虑使用内连接而不是外连接,并使用group_concat()之类的东西来组合电话号码。