2017-05-13 6 views
0

上のポストに関する最新のコメント、インデックスなしの信者からの合計数を選択します。続き は、私のテーブル構造のサンプル私は、各ポストの総コメント数と、各ポストの最新のコメントをフォロワーからの投稿を取得する必要がコメント文字列

post_table 
post_id | post_body | post_author | post_date 
    1 |  Hi |  2  | 1970-01-01 05:30:00 

Comment table 
comment_id | comment_body | entity_id | comment_date | comment_author 
    1  | Hi comment |  1 | 1970-01-01 |  1 

私はpost_idの、comment_id、ENTITY_IDと日付にインデックスを持っています。

私は大きな文字列にインデックスを持ってしたくないとしてコメント本体上でグループを行わず、各ポストの最新コメントのコメント本体をフェッチするクエリ

select p1.author_id, 
      p1.post_id, 
      count(comment1.entity_id) as comment_count, 
      display_name 
from  post as p1 
left join comments as comment1 
on  p1.post_id = comment1.entity_id 
left join user_details as u1 
on  p1.post_id = u1.uid 
where  p1.author_id in (select user_relation.follower_id 
          from user_relation 
          where follower_id = '6') 
group by p1.post_id 

次試してみました。 私はすでにネットやその他の質問を探してみました。

+0

なぜpost_idのそれを呼び出しますか? – Strawberry

+0

@Strawberryねえどこ?あなたは詳しく教えてもらえますか? –

答えて

1

あなたはコメント数と一度でポストあたりの最新コメントIDを検索し、必要な詳細を取得するためにポストとコメントテーブルとそれに参加することができます:

select p.author_id, p.post_id, c.comment_count, c2.comment_body 
from post p 
left join (
    select entity_id, count(*) as comment_count, max(comment_id) as max_comment_id 
    from comments 
    group by entity_id 
) c on p.post_id = c.entity_id 
left join comments c2 on c2.comment_id = c.max_comment_id; 
+0

@Guruwinder答えをありがとう。しかし、comment_idが必ずしも自動インクリメントではないので、何らかの形でmax(comment_id)ではなくdateカラムでそれを行うことができれば、それは良いことではありません。 –

+0

@ v4_adi - これを使用することもできますが、日付列は一意ではなく、複数の行を返すことがあります。 auto incをお持ちの方が簡単です。 id列。 – GurV

+0

私は日付を使ってそれをやりたかったのですが、私はそれを修正された日付に従って表示したいが、今のところ問題を解決するようにしたい。再度、感謝します。 –

関連する問題