postgres のクエリで group by を使用しようとしています。必要に応じて結果をグループ化するために、思い通りに機能させることができません。
これは、先ほど回答した再帰クエリに関する別のスタックに関する質問の拡張です。しかし、最終的なクエリの root_id 列で結果をグループ化できるようにする必要があります。前のクエリは次のとおりです。
select cl.parent_comment_id,
cl.article_comment_id,
cl.comment,
cl.article_id,
cl.comment_depth
from comment_list cl
order by cl.root_id, cl.article_comment_id, cl.comment_depth;
同じparent_comment_idを持つすべてのレコードが一緒に保持されるように、私がやりたいことは次のとおりです。
select cl.parent_comment_id,
cl.article_comment_id,
cl.comment,
cl.article_id,
cl.comment_depth
from comment_list cl
group by cl.parent_comment_id
order by cl.parent_comment_id, cl.article_comment_id, cl.comment_depth;
同じparent_comment_idが返されたレコードが多数存在する可能性がありますが、任意のarticle_comment_idに対して異なるレコードが返されます。つまり、各コメントは一意 (ID、コメント、タイトルなど) ですが、各親コメントは多くの子を持つことができます。これは再帰クエリによって既に取得されているため、正しくグループ化しようとしています。
編集:
http://www.sqlfiddle.com/#!12/77771/2を見てください。id=3 が親であるため、article_comment_id=6 が article_comment_id=3 のすぐ下に続くようにします。次に article_comment_id=4。
ただし、これは手続き的に行う必要があると考えています。
したがって、誰かが方法を知らない限り、これは「気にしない」タイプの質問だと思います(それが私がそれを残している理由です)。しかし、私はこの部分を手続き的に解決しようとしていると思います。