我有2个表,第3个映射表只有两个表的id(外键)。 是否可以通过一个查询得到这样的结果
╔═══════╦═══════╗
║user_id║ data ║
╠═══════╬═══════╣
║ 1 ║ {a, c}║
╠═══════╬═══════╣
║ 2 ║ b ║
╚═══════╩═══════╝
Table users:
user_id (pk, fk to relationship.userid)
Table data:
data_id (fk to data.data_id)
data
Table relationship:
user_id (fk of user.user_id)
data_id (fk of data.data_id)
这是一个示例数据
USER
+-------+
|user_id|
|-------|
| 1 |
+-------+
| 2 |
+-------+
RELATIONSHIP
+-------+-------+
|user_id|data_id|
+-------+-------+
| 1 | 1 |
+-------+-------+
| 1 | 3 |
+-------+-------+
| 2 | 2 |
+-------+-------+
DATA
+-------+----+
|data_id|data|
+-------+----+
| 1 | a |
+-------+----+
| 2 | b |
+-------+----+
| 3 | c |
+-------+----+
使用连接查询,结果会为其拥有的每个数据重复user_id 与此How to get all data from 2 tables using foreign key
类似问题在于我循环遍历我的php代码中的结果,列出用户拥有所有数据,而不是多次列出用户拥有的数据。
答案 0 :(得分:0)
你可以试试group_concat() 选择r.user_id,group_concat(d.data) 来自关系r 在r.data_id = d.data_id上连接数据d r.user_id分组