[英]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.