
課題テーブル:
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, 成績.科目, 成績.成績
サブクエリを使わずに実行する方法は、何かないものでしょうか。
No.1ベストアンサー
- 回答日時:
LEFT JOINするときに条件で科目=算数をいれておいて、
WHEREで課題1をチョイスすればGROUP BY するまでもなく人は
ユニークになると思いますが・・・
こんなかんじ
SELECT *
FROM 課題
LEFT JOIN 成績 ON 課題.人=成績.人
AND 科目='算数'
WHERE 課題='課題1'
ORDER BY COALESCE(順位,999)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
降順で並び替えて昇順で受け取...
-
下記の問合せを行うクエリを、P...
-
「テーブルに座って……」という...
-
飲み会で、座敷orテーブルどち...
-
AccessのSQL 部分一致したデー...
-
SQLでUPSERTを一度に複数行やる...
-
外部キーだけのテーブル(主キ...
-
住所のDBテーブル、マスターの...
-
SQL(oracle)でご助言いただきた...
-
会社の飲み会の幹事になり、座...
-
SQLでSUMなどの関数でデータが...
-
Oracleのsystem表領域について
-
SELECT 文の NULL列は?
-
男性と2人で飲食店に行きテーブ...
-
C#で電卓のプログラムを組んで...
-
面接のときテーブルが正面に。...
-
SQLでテーブルの値を集計して、...
-
MySQL8にバージョンアップした...
-
Excel テーブル内の空白行の削除
-
off of と fromの違いを教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
降順で並び替えて昇順で受け取...
-
SQLで漢字名称を都道府県や市区...
-
うまくいきません教えてくださ...
-
このSQLあってますか?教えてく...
-
下記の問合せを行うクエリを、P...
-
3つの表の外部結合
-
SQLです。こんな感じですか?あ...
-
列値の分割の方法
-
SQLについて教えてください。
-
現在庫算出方法についてお教え...
-
Access 出荷管理簿を作りたい...
-
SQLPLUSのGROUP BY句について
-
サブクエリを使用せずにLEFT JO...
-
ACCESS2010 SQL 結合キーにつ...
-
下記の問合せを行うクエリを、P...
-
access結合クエリを編集可能に
-
「テーブルに座って……」という...
-
AccessのSQL 部分一致したデー...
-
外部キーだけのテーブル(主キ...
-
Accessでデータシートに同じデ...
おすすめ情報