【发布时间】:2018-07-08 11:50:03
【问题描述】:
我有 2 个表,其中第三个映射表只有两个表的 ids(外键)。 有没有可能只用一个查询就得到这样的结果
╔═══════╦═══════╗
║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 代码中循环遍历结果,以列出用户及其所有数据一次,而不是多次列出用户拥有的数据。
【问题讨论】:
-
阅读 MySQL
GROUP_CONCAT看看它是否适合你。 -
到目前为止你尝试了什么???? SO 不是免费的编码服务。
-
@TheOneWhoMade 我手动输入了它们。第一个是我从另一页复制的。 @Eric我已经尝试了很多,我发布了这个以了解我是否有可能尝试做。我正在做的事情有更多的表格和关系。我已经得到了我想要的东西,只是它没有为每个用户返回一行。选择
user987654327 @,data987654329useruserrelationuser987654334relationdata987654337 @relation987654338@ =data.data_id。如果你知道,回答它。你可以说它可能或不可能。 -
@PM77-1 谢谢你的工作。
标签: php mysql join inner-join