我认为这是一个相当普遍的模式,但是我只是在为它进行适当的查询而苦苦挣扎。
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
表中始终具有对应的行。首先,加入member
和user_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/