因此,我有两个表,文章和评论(它们具有一对多关系(1条-很多评论)).该表的结构如下:
文章-ID(公钥),标题,出版物日期,内容
注释-com_id(密钥),作者,注释,ID(外键)
我用它来查询两个表:
SELECT * FROM articles as a INNER JOIN comments as c ON a.id = c.id
以前,我仅使用以下方式显示商品表:
<?php
while($row = mysqli_fetch_array($query)) {
echo "
<div id='article'>
<header>
<hgroup>
<h2>".$row['title']."</h2>
<h4>Posted on ".$row['publicationDate']."</h4>
</hgroup>
</header><p>".$row['content']."</p></div>";
}
?>
这将显示所有文章(带有日期,标题,内容等).现在有评论.我如何编辑php代码(或者如果我的查询不正确,如何编写查询),以使其显示所有文章以及每个文章的所有注释,如下所示:
Article One
-- Comment 1
-- Comment 2, etc.
Article Two
-- Comment 1
-- Comment 2, etc.
解决方法:
一种替代方法是将查询分为两部分.
首先会带回您想要的文章…
SELECT * FROM article;
拥有这些ID后,即可获取所有ID并使用类似以下内容的代码
SELECT * FROM comments WHERE article_id IN (".$list.");
这将MySQL查询限制为2,同时获取所需的所有数据.在围绕文章数据进行此循环之后,在该循环中,围绕评论数据进行循环.
这也意味着,与使用GROUP_CONCAT不同,您还将需要使用作者数据.
这不是一个很有说服力的解决方案,但应该可以.