※ ChatGPTを利用し、要約された質問です(原文:サブクエリを使用せずにLEFT JOIN + GROUP BY + ORDER BYでデータの取得)
LEFT JOIN + GROUP BY + ORDER BYでデータの取得方法
2008/07/03 14:33
このQ&Aのポイント
LEFT JOIN + GROUP BY + ORDER BYを使用してデータを取得する方法について説明します。
サブクエリを使用せずに、課題テーブルから課題1を算数の成績順に取得する方法を探しています。
名前でGROUP BYすると科目と成績の整合性がとれなくなってしまい、正しい順位付けができません。
サブクエリを使用せずにLEFT JOIN + GROUP BY + ORDER BYでデータの取得
課題テーブル:
1 課題1 Aさん
2 課題1 Bさん
3 課題1 Cさん
4 課題1 Dさん
5 課題1 Eさん
6 課題2 Bさん
7 課題2 Cさん
成績テーブル:
Aさん 算数 1
Aさん 国語 2
Bさん 算数 3
Cさん 算数 2
Dさん 国語 1
目的:
課題1を算数の成績順に取得したい。
普通にLEFT JOINすると以下のようになる。
1 課題1 Aさん 算数 1
1 課題1 Aさん 国語 2
2 課題1 Bさん 算数 3
3 課題1 Cさん 算数 2
4 課題1 Dさん 国語 1
5 課題1 Eさん NULL NULL
ここから名前を1つにまとめて、成績順に。
1 課題1 Aさん 算数 1
3 課題1 Cさん 算数 2
2 課題1 Bさん 算数 3
4 課題1 Dさん NULL NULL
5 課題1 Eさん NULL NULL
このようにしたいのですが、名前でGROUP BYすると科目と成績の整合性がとれなくなってしまい、正しく順位づけできません。
ORDER BY CASE
WHEN 成績.科目 = '算数' THEN '0'
WHEN 成績.科目 IS NULL THEN '2'
ELSE '1'
END, 成績.科目, 成績.成績
サブクエリを使わずに実行する方法は、何かないものでしょうか。
質問の原文を閉じる
質問の原文を表示する
お礼
なるほど!! COALESCEを使えばうまく動きますね! どうもありがとうございました。 本当に助かりました!