0

私は2つのテーブルを持っています

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 にないすべての投稿を取得してから、すべての投稿をループしてから、メインの投稿と返信された投稿を 1 つずつ取得することで、それを行うことができます。

これらすべてを 1 つのクエリで取得したいだけです。これは可能ですか?データベースとして mysql を使用し、mybatis で spring mvc を使用しています。そのため、リスト全体を取得してモデル属性に入れ、jsp ページに表示しています。

データベース構造やその他のソリューションを変更するなど、これを達成するためのより良い方法を誰かが提案できれば、それは素晴らしいことです。

4

3 に答える 3

0

テーブルポスト

+ --------- + ------- + --------- +
| post_id | 投稿| コメント|
+ --------- + ------- + --------- +
| 1 | kjasd | ajsdh |
| 2 | abc | dfgdfg |
| 3 | ashdf | NULL |
+ --------- + ------- + --------- +

テーブル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 に答える
0

これを行うのはかなり単純な結合クエリだと思います。次のことを試してください。

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

2 つのテーブルを結合します。

例えば、

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

あなたの質問からあなたが何を求めているのか正確にはわかりませんが、これでうまくいかない場合は、GROUP BY を使用することをお勧めします。

于 2012-08-28T14:02:27.247 に答える