用于发布和回复的SQL查询

时间:2012-08-28 13:57:15

标签: mysql sql

我有两张桌子

post Table
 post_id
 post_name
 post_summary
 date

post_reply Table
 parent_id
 post_id

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

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

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

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

如果有人可以建议我更好地实现这一目标,例如更改我的数据库结构或任何其他解决方案,那就太棒了。

3 个答案:

答案 0 :(得分:0)

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

例如,

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

我不确定你的问题究竟是什么,但如果这不符合你的要求,你可能想要使用GROUP BY。

答案 1 :(得分: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'];
}

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

答案 2 :(得分:0)

表格帖子

+---------+-------+---------+
| post_id | post  | comment |
+---------+-------+---------+
|       1 | kjasd | ajsdh   |
|       2 | abc   | dfgdfg  |
|       3 | ashdf | NULL    |
+---------+-------+---------+

table 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);

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