一个简单的多对多SQL示例

时间:2014-08-09 21:00:32

标签: mysql sql many-to-many

我试图找出一种执行SQL查询的好方法,该查询返回用户名及其选择的表(有一组选项,用户可以有很多选择),如示例中所示下面。我还没有找到一个很好的简单例子(除了如何建立关系)。这个解决方案是否可行或有更好的方法吗?我似乎找到了我正在寻找的桌子。

SELECT
users.name,
choices.choice as choice
FROM 
choice
JOIN relation ON choice.choice_id = relation.choice_id
JOIN users ON users.name_id = relation.user_id;

给我正确的表格:

+------+--------+
| name | choice |
+------+--------+
| amy  | a      |
| amy  | b      |
| amy  | c      |
| joe  | d      |
+------+--------+

简单数据库如下所示:

用户

+------+---------+
| name | name_id |
+------+---------+
| amy  |       1 |
| joe  |       2 |
+------+---------+

选择

+----------+---------+
| choice_id|  choice |
+----------+---------+
|        1 | a       |
|        2 | b       |
|        3 | c       |
|        4 | d       |
+----------+---------+

关系

+----------+---------+
| choice_id| user_id |
+----------+---------+
|        1 |       1 |
|        2 |       1 |
|        3 |       1 |
|        4 |       2 |
+----------+---------+

0 个答案:

没有答案