繁体   English   中英

用MySQL连接3个表返回额外数据

[英]Joining 3 tables with Mysql Return Extra Data

我有3张桌子-成员,有效,新

会员表:

+--------+---------+------------+
| userid | adminid | logindate  | 
+--------+---------+------------+
| test6  | test3   | 03/04/2016 |
| test7  | test3   |            |
+--------+---------+------------+

活动表:

+----+--------+---------+---------+
| id | userid | adminid | city    |
+----+--------+---------+---------+
| 1  | test6  | test3   | Chicago |
+----+--------+---------+---------+

新表:

+----+--------+----------+
| id | userid | city     |
+----+--------+----------+
| 1  | test7  | New York |
+----+--------+----------+

我想找出属于管理员ID(test3)的所有成员,无论它们是活动的还是新的。 mysql代码:

    SELECT active.id, active.userid, active.city, members.logindate,
 new.id as a, new.userid as b, new.city as c 
    FROM members
    LEFT JOIN active
    ON members.adminid = active.adminid
    LEFT JOIN new
    ON members.userid = new.userid
    WHERE members.adminid = 'test3'

我期望的是两行记录:

+----+--------+---------+------------+---+-------+----------+
| id | userid | city    | logindate  | a |  b    | c        |
+----+--------+---------+------------+---+-------+----------+
| 1  |test6   | Chicago | 03/04/2016 |   |       |          |
+----+--------+---------+------------+---+-------+----------+
|    |        |         |            | 1 | test7 | New York |
+----+--------+---------+------------+---+-------+----------+

相反,我得到了:

+----+--------+---------+------------+---+-------+----------+
| id | userid | city    | logindate  | a |  b    | c        |
+----+--------+---------+------------+---+-------+----------+
| 1  |test6   | Chicago | 03/04/2016 |   |       |          |
+----+--------+---------+------------+---+-------+----------+
| 1  |test6   | Chicago |            | 1 | test7 | New York |
+----+--------+---------+------------+---+-------+----------+

来自第一行(来自活动表)的数据在第二行中重复。 我究竟做错了什么? 感谢您的帮助。 提前致谢。

您应该join userid而不是adminid

SELECT active.id, active.userid, active.city, members.logindate,
     new.id as a, new.userid as b, new.city as c 
FROM members
    LEFT JOIN active
        ON members.userid = active.userid
    LEFT JOIN new
        ON members.userid = new.userid
WHERE members.adminid = 'test3'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM