【发布时间】:2016-08-08 21:53:09
【问题描述】:
这个问题有点长,希望清楚,提前谢谢!
简介
我目前有 3 个使用多对多关系的表。我需要查询所有 3 个表并将它们组合成 1 个表。
问题
我试过这个查询:
SELECT * FROM `login` LEFT JOIN membership ON login.id = membership.login_id UNION SELECT * FROM `login` RIGHT JOIN membership ON login.id = membership.login_id
然后它返回:
+----+------+----------+
| id | name | group_id |
+----+------+----------+
| 1 | Tom | 6 |
| 2 | John | 8 |
| 3 | Jane | 4 |
+----+------+----------+
问题
我还需要它包括group_name。这是我想要的输出:
+----+------+----------+------------+
| id | name | group_id | group_name |
+----+------+----------+------------+
| 1 | Tom | 6 | Red |
| 2 | John | 8 | Brown |
| 3 | Jane | 4 | Purple |
+----+------+----------+------------+
表格
login表
具有自动递增 id 的所有用户的列表
+----+------+
| id | name |
+----+------+
| 1 | Tom |
| 2 | John |
| 3 | Jane |
+----+------+
group 表
带有
group_id和group_name的所有组的列表
+----------+------------+
| group_id | group_name |
+----------+------------+
| 1 | Green |
| 2 | Blue |
| 3 | Yellow |
| 4 | Purple |
| 5 | Orange |
| 6 | Red |
| 7 | Pink |
| 8 | Brown |
+----------+------------+
membership 表
存储有关哪个用户属于哪个组的信息
+----------+----------+
| login_id | group_id |
+----------+----------+
| 1 | 6 |
| 2 | 8 |
| 3 | 4 |
+----------+----------+
【问题讨论】:
-
一般来说,您应该使
FROM子句“始终”中引用的任何表出现,然后从那里出现LEFT JOIN- 这将使您对实际数据连接的推理更加容易。
标签: mysql sql database join union