我认为这是一个相当普遍的模式,但是我只是在为它进行适当的查询而苦苦挣扎。

User Table
id

Member table
id
name

User Member link table
user_id
member_id


用户可能存在于该用户的表中,但在“用户成员”链接表中没有一行。

我想选择用户表的所有行,以及用户在用户成员链接表中具有指向成员的链接的位置,以显示从成员表链接到它们的列。

这就是我得到的,但是它仅从User表中获取链接的行:

SELECT user.id, user.username, member.id, member.name
FROM users
LEFT JOIN user_member ON user.id = user_member.user_id
JOIN member ON user_member.member_id = member.id;


我应该得到这样的东西:

user.id   user.username   member.id   member.name
1         bob             null        null
2         alice           10          Alice
3         jane            11          Jane
4         joe             null        null


有什么建议么?

最佳答案

我假设user_member表中的member_id在member表中始终具有对应的行。首先,加入memberuser_member。其次,加入user

SELECT user.id, user.username, member.id, member.name
FROM users
LEFT JOIN
(user_member INNER JOIN member ON user_member.member_id = member.id)
ON user.id = user_member.user_id;

关于mysql - 三通联接表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41388595/

10-09 21:08