三种方式连接与链接表

时间:2016-12-29 23:23:41

标签: mysql sql

我认为这是一种相当普遍的模式,但我只是在努力寻找合适的查询。

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

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我假设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;

答案 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