【问题标题】:Display the latest comment entered显示最新输入的评论
【发布时间】:2016-02-23 10:15:29
【问题描述】:

我有一个帖子表和一个 cmets 表,其中一个帖子将添加多个 cmets。有一个 php 表,我在其中显示数据。
在此表中,我想在添加帖子时显示帖子的最新评论。

发布表,添加帖子的位置:

       Posts 
+-------+---------+
|  id   | Post    |
+-------+---------+
|   1   |   ABC   |
|   2   |   DEF   |
|   3   |   GHI   |
+-------+---------+

评论表,其中 cmet 数量将添加到特定帖子:

   Comments
+----------+---------+
|  Post_id | Comment |
+----------+---------+
|   1      |   A     |
|   1      |   D     |
|   3      |   F     |
|   3      |   V     |
|   3      |   B     |
+----------+---------+

这里的post_id取自post表的id。

我希望在此表中显示具有最新评论的帖子:

<table>
  <thead>
    <tr>
      <th>Post</th>
    </tr>
  </thead>
  <tbody>
    <?php foreach($results as $key=>$row) { ?>
    <tr>
       <td><?php echo $row['Comment'];?></td>
    </tr>
    <?php } ?>
</tbody>
</table>

例如:

+----------+---------+
|  Post    | Comment |
+----------+---------+
|   ABC    |   D     |
|   GHI    |   B     |
+----------+---------+

提前致谢。

【问题讨论】:

  • 请发布您的相关表结构 (create table code)
  • 鉴于 RDBMS 中的行表示无序集,定义“最新”。
  • 在表Comments 中增加一列id 并自动增加。稍后,您可以使用 id "ORDER BY id DESC" 排序打印结果
  • 添加主键列后的查询语句是什么?

标签: php mysql


【解决方案1】:

这对你有用!

SELECT comment FROM comments WHERE comment_id = (SELECT comment_id 
FROM comments WHERE post_id = 1 ORDER BY comment_id DESC LIMIT 1);`

表结构

表格数据

查询结果

【讨论】:

  • 试试这个 - SELECT post from posts where post_id = 1 UNION SELECT comment FROM comments WHERE comment_id = (SELECT comment_id FROM comments WHERE post_id =1 ORDER BY comment_id DESC LIMIT 1)
  • 或者,您可以同时使用 2 个单独的查询。 SELECT post from posts where post_id = 1 获取 post_id 为 1 的帖子,SELECT comment FROM comments WHERE comment_id = (SELECT comment_id FROM comments WHERE post_id =1 ORDER BY comment_id DESC LIMIT 1) 获取 post_id 为 1 的帖子的最后评论。
  • 如果对您有帮助,请接受并投票赞成我的回答。
【解决方案2】:

在当前状态下,它们不是简单且最佳的方法。我建议您在当前的 Comments 表中添加一个 id 字段。

【讨论】:

  • 我认为 OP 的表表示形式过于简略,我们无法真正判断它是否缺少主键
  • 在当前状态下,应该是评论。
【解决方案3】:

添加到@Sakuto 回答

还为 cmets 表提供 ID,并对其进行 AUTO_INCREMENT。当您选择特定帖子的 cmets 时,获取其对应的 cmets 并使用关联的评论 ID 显示它们。可能您需要将它们显示为较高的数字(ID)到较低的数字(ID)。将 ID 设为主键。

【讨论】:

    【解决方案4】:

    完整的解决方案。您可以使用

    在 Comments 表中添加 current_date 列
    TIMESTAMP datatype 
    

    并设置

    CURRENT_TIMESTAMP as default
    

    每当有新评论时,它将添加当前日期和时间。然后,添加您的 sql 查询。

    order by current_date desc
    

    它会首先返回最新的评论。

    【讨论】:

      猜你喜欢
      • 2021-05-14
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      相关资源
      最近更新 更多