0

我有两张桌子

post Table
 post_id
 post_name
 post_summary
 date

post_reply Table
 parent_id
 post_id

所以我正在做的是在帖子表中插入一个新的帖子详细信息,如果该帖子有任何回复,那么我将所有详细信息放入帖子表本身,并将主帖子 ID 存储为 parent_id 并将回复的帖子 ID 存储为 post_id发表回复。

现在我想获取主帖子下的所有帖子及其回复(如果有的话),并希望在我的 jsp 页面上显示相同的内容。

我无法编写单个查询来获取这些详细信息。我可以通过首先获取所有 id 不在 post_reply 中的帖子然后循环所有帖子然后获取主帖子并逐一回复帖子来做到这一点。

我只想在一个查询中获取所有这些。这可能吗?我使用 mysql 作为数据库,并在 mybatis 中使用 spring mvc。因此,我正在完善整个列表并将其放入我的模型属性中并将其显示在 jsp 页面上。

如果有人可以建议我一种更好的方法来实现这一点,比如改变我的数据库结构或任何其他解决方案,那就太好了。

4

3 回答 3

0

您想将两个表连接在一起。

例如,

SELECT     *
FROM       post
INNER JOIN post_reply 
ON         post.post_id = post_reply.post_id

我不确定您的问题到底是什么,但如果这不能满足您的要求,您可能需要使用 GROUP BY。

于 2012-08-28T14:02:27.247 回答
0

我认为这是一个相当简单的 Join 查询。尝试以下操作:

SELECT * FROM post pt JOIN (post_reply pr) ON pr.parent_id = pt.post_id

然后,您将像这样循环遍历 PHP 中的结果

while($row = mysql_fetch_array($your_query)) {
  $parent_id = $row['post_id'];
  $reply_id = $row['post_id'];
  $content = $row['post_summary'];
}

然后,您可以根据上面的详细信息构建您的回复表

于 2012-08-28T14:03:17.340 回答
0

桌柱

+---------+--------+---------+
| post_id | 发布 | 评论 |
+---------+--------+---------+
| 1 | kjasd | ajsdh |
| 2 | 美国广播公司 | dfgdfg |
| 3 | 阿什夫 | 空 |
+---------+--------+---------+

表 post_reply

+------------+---------+
| parent_id | post_id |
+------------+---------+
| 1 | 2 |
+------------+---------+

使用它正在工作的这个查询:

select *from post where post_id=1 or post_id in (select post_id from post_reply where parent_id=1);

只有在没有回复的情况下,它才会返回带有父帖子和父帖子的回复。

于 2012-08-28T14:18:15.030 回答