用3个表进行多对多查询

时间:2014-04-09 05:36:19

标签: mysql sql join left-join

我有3个表:WASUSER和连接表WAS_USER。我想要实现的是获取表WAS中的所有行,如果有多个用户使用同一个WAS,我希望每个行都有一行。 例如:

WAS:
    id | name
    1  | 'was1'
    2  | 'was2'

USER:
    id | name
    1  | 'user1'
    2  | 'user2'

WAS_USER:
    userId | wasId
    1      | 1
    2      | 1

所以在排队之后我需要得到这个:

wasrId | userId | wasName | userName
1      | 1      | 'was1'  | 'user1'
1      | 2      | 'was1'  | 'user2'
1      | 2      | 'was1'  | 'user2'

3个表之间的普通连接将只提供WAS中的我的行,我需要的是3个表上的某种left join

1 个答案:

答案 0 :(得分:0)

好的,这对我有用:

SELECT * 
FROM 
(SELECT * FROM WAS W LEFT JOIN WAS_USER WU ON W.id=WU.wasID) TMP LEFT JOIN USER U ON TMP.userId=U.userId

虽然不知道效率......