多次写查询是个好主意

时间:2017-01-11 05:07:27

标签: php mysql

我有帐户,帖子和讨论表 在检索帖子时,我也希望得到与该帖子相关的讨论 表关系是一个帖子可以有零个或多个讨论。 我写了以下查询。

SELECT p.*,d._id, d.discussion, d.discussed_by  
FROM posts p, discussions d   
WHERE d.post_id = p._id  

此查询有效,但结果如下所示。 从_idaccount_id来自帖子表。如果我有关于这篇文章的100次讨论,结果将有100个重复数据。我怎么能克服这一点。我的想法是第一次得到这篇文章(第一次查询)并得到这篇文章的所有讨论(第二次查询)。那个怎么样?

在php数组表单中,我希望得到以下格式的结果 (1)讨论(1),讨论(2),讨论(3)
但现在我的查询返回以下结果。
帖子(1)讨论(1)
(1)讨论(2)
帖子(1)讨论(3)
我正在使用PHP和mysql。Result of the above query

Wanted result, is it possible or not?

有可能吗?

1 个答案:

答案 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