我有帐户,帖子和讨论表 在检索帖子时,我也希望得到与该帖子相关的讨论 表关系是一个帖子可以有零个或多个讨论。 我写了以下查询。
SELECT p.*,d._id, d.discussion, d.discussed_by
FROM posts p, discussions d
WHERE d.post_id = p._id
此查询有效,但结果如下所示。
从_id
到account_id
来自帖子表。如果我有关于这篇文章的100次讨论,结果将有100个重复数据。我怎么能克服这一点。我的想法是第一次得到这篇文章(第一次查询)并得到这篇文章的所有讨论(第二次查询)。那个怎么样?
在php数组表单中,我希望得到以下格式的结果
(1)讨论(1),讨论(2),讨论(3)
但现在我的查询返回以下结果。
帖子(1)讨论(1)
(1)讨论(2)
帖子(1)讨论(3)
我正在使用PHP和mysql。
有可能吗?
答案 0 :(得分:1)
在共享相同帖子ID的讨论中获取您想要使用GROUP_CONCAT
的结果的一个选项。这将导致该线程的逗号分隔讨论列表。这样的事情应该有效:
SELECT t1.*,
COALESCE(t2.discussion, 'NA')
FROM posts t1
LEFT JOIN
(
SELECT _id, GROUP_CONCAT(discussion) AS discussion
FROM discussions
GROUP BY _id
) t2
ON t1.post_id = t2._id