Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多次编写查询是个好主意吗_Php_Mysql - Fatal编程技术网

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数据。我希望你能理解我的评论。因为我的英语水平,我再也解释不清楚了。