我认为这是一种相当普遍的模式,但我只是在努力寻找合适的查询。
User Table
id
Member table
id
name
User Member link table
user_id
member_id
用户可能存在于用户的表中,但在用户成员链接表中没有行。
我想选择User表的所有行,以及用户在用户成员链接表中有成员链接的位置,以显示从成员表链接到它们的列。
以下是我所拥有的内容,但它只会从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
有什么建议吗?
答案 0 :(得分:1)
我假设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;
答案 1 :(得分:1)
尝试使用CROSS JOIN
SELECT user.id, user.username, member.id, member.name
FROM users u
CROSS JOIN member m
LEFT JOIN user_member um
ON u.id= um.user_id
AND m.id= um.member_id