Php 多次编写查询是个好主意吗
我有账户、帖子和讨论表。Php 多次编写查询是个好主意吗,php,mysql,Php,Mysql,我有账户、帖子和讨论表。 检索帖子时,我还希望获得与该帖子相关的讨论。 表关系是一个帖子,可以有零个或多个讨论。 我编写了以下查询 SELECT p.*,d._id, d.discussion, d.discussed_by FROM posts p, discussions d WHERE d.post_id = p._id 此查询可以工作,但结果如下所示。 从\u id到账户id来自posts表。如果我有100个关于这篇文章的讨论,结果将有100个重复的数据。我怎样才能克服这
检索帖子时,我还希望获得与该帖子相关的讨论。
表关系是一个帖子,可以有零个或多个讨论。 我编写了以下查询
SELECT p.*,d._id, d.discussion, d.discussed_by
FROM posts p, discussions d
WHERE d.post_id = p._id
此查询可以工作,但结果如下所示。
从\u id
到账户id
来自posts表。如果我有100个关于这篇文章的讨论,结果将有100个重复的数据。我怎样才能克服这个问题。我的想法是第一次得到这篇文章(第一次查询),然后得到这篇文章的所有讨论(第二次查询)。怎么样
在php数组形式中,我希望得到以下格式的结果发布(1)讨论(1)、讨论(2)、讨论(3)
但是现在我的查询返回以下结果。
发布(1)个讨论(1)
发布(1)讨论(2)
发布(1)讨论(3)
我正在使用PHP和mysql
是否可能?一个选项可以获得共享相同帖子ID的讨论的结果。这将导致该线程的讨论列表以逗号分隔。像这样的方法应该会奏效:
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
对此,您需要使用左连接查询。讨论本身肯定不会重复。显示您实际需要的输出。不要让我们猜测。@ChetanPanchal Left join也给了他同样的结果。如果任何帖子的讨论计数为1000,那么结果将显示1000条记录以及左侧表格的全部细节。也一样。我认为为这个问题加入多个表不是一个好方法。尽管有两个不同的查询。我的想法是第一次得到这篇文章(第一次查询),然后得到这篇文章的所有讨论(第二次查询)。怎么样?那是个好主意。完成了吗?结果中没有讨论表中的数据。我是否需要更改您查询中的某些内容?我更新了答案,只需加入
讨论
。我建议不要使用*
来选择,而是要拼写出每一列。这将使您更容易处理空值。您的答案很好,但结果与我的问题相同。再一次,您从未向我们展示您想要的输出。如果要聚合讨论
表中的记录,则需要指定要聚合的内容。那么…你真正想要什么样的输出?请清楚地说出来。我想要讨论中的所有数据,但只有一个来自帖子的数据。例如,我希望获得[post_1]的所有讨论,但我只希望获得一次post数据。我希望你能理解我的评论。因为我的英语水平,我再也解释不清楚了。