- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:3つのテーブルを使ったselecct文でのorder by とgroup by の使い方について)
3つのテーブルを使ったselecct文でのorder by とgroup by の使い方について
このQ&Aのポイント
- 3つのテーブルを結合してselect文でデータを取得する際のorder byとgroup byの使い方について質問です。
- 特に、u_dateというカラムを使ってデータをソートしたいのですが、order byだけではエラーが出てしまうため、group byを使って結果を整理したいと思っています。
- しかし、idとp_numが同じものでもu_dateが異なる場合があるため、group byを使うと結果が重複して表示されてしまいます。idとp_numを区別せずに1つのレコードとして扱いたいのですが、どうすればよいでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「idとp_numが同じで、日付が違うものがある」ならば、グループ化された行の中に複数の日付の値が含まれるので、そのままではソートの条件には出来ません。 日付の項目に集約関数を使う必要が有ります。 例えば、下記の様な ORDER BY句が考えられます。 ■ (グループ中の)最新のu_dateでソート ORDER BY MAX(u_date) ■ (グループ中の)最古のu_dateでソート ORDER BY MIN(u_date) http://www.postgresql.jp/document/pg746doc/html/functions-aggregate.html http://www.postgresql.jp/document/pg746doc/html/queries-order.html
お礼
返信が遅くなって申し訳ありません。 ややこしいSQLに回答をいただきありがとうございます。 やってはみたのですが、下記のようにしても日付順にソートされませんでした。 order by w.id desc,p.p_num,MAX(u_date)
補足
すみません!!私の勘違いでした。。。 うまくソートできました。 ありがとうございます。