数据库
首页 > 数据库> > mysql-LEFT JOIN 3列获取用户名

mysql-LEFT JOIN 3列获取用户名

作者:互联网

我需要连接来自三张不同表格的三列,

捐款表:

+-----------+---------------------+
| record_id | contributor_user_id |
+-----------+---------------------+
|         1 |                   2 |
+-----------+---------------------+
|         1 |                   5 |
+-----------+---------------------+

会员表:

+--------------+---------+
| username     | user_id |
+--------------+---------+
| Test         |       1 |
+--------------+---------+
| Test2        |       5 |
+--------------+---------+
| Test3        |       6 |
+--------------+---------+

记录表:

+---------+-----------+
| user_id | record_id |
+---------+-----------+
|      28 |         1 |
+---------+-----------+

对于我需要返回的是用于显示记录所有者的用户名和user_id.另外,显示用户名和user_id,但是可以是多个(超过1个用户).我已经试过了:

SELECT usr.username,
       usr.user_id,
       rec.record_id,
       contrib.record_id,
       contrib.contributor_user_id
FROM 
(
    records rec

    INNER JOIN members usr ON rec.user_id = usr.user_id

    # this returns records as NULL
    LEFT OUTER JOIN contributions contrib ON rec.record_id = contrib.record_id AND contrib.contributor_user_id = usr.user_id

    # this works, but I need the username to be displayed too
    LEFT OUTER JOIN contributions contrib ON rec.record_id = contrib.record_id
)
WHERE rec.record_id = 1

解决方法:

尝试在要添加的左侧连接中嵌套要添加用户的连接.

SELECT u.username, u.user_id, r.record_id, u2.username as ContributorName, u2.user_id as ContributorId
    FROM records r
        INNER JOIN members u
            ON r.user_id = u.user_id
        LEFT JOIN contributions c
            INNER JOIN members u2
                ON c.contributor_user_id = u2.user_id
            ON r.record_id = c.record_id
    WHERE r.record_id = 1

标签:left-join,mysql
来源: https://codeday.me/bug/20191208/2090443.html