1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 新・SQL入門編03ドリル(言語選択)
  4. 問題一覧 MySQL編
  5. 複合的な条件を指定して取得しよう (Part 2)

新・SQL入門編03ドリルのサムネイル
複合的な条件を指定して取得しよう (Part 2) (paizaランク C 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

注文内容が oredered_menu テーブルに保存されています。
ordered_menu テーブルの形式は次の通りです。

#カラム名データ型内容
1ordered_id整数 (int)注文の通し番号
2menu_id整数 (int)メニュー番号
3num整数 (int)メニューの注文数
4sum整数 (int)小計


注文履歴が ordered テーブルに保存されています。
ordered テーブルの形式は次の通りです。
#カラム名データ型内容
1ordered_id整数 (int)注文の通し番号
2datetime日時 (datetime)注文がおこなわれた日時
3bill整数 (int)注文の合計金額


カテゴリが category テーブルに保存されています。
category テーブルの形式は次の通りです。
#カラム名データ型内容
1category_id整数 (int)カテゴリ番号
2name文字列 (varchar)カテゴリ名


メニューが menu テーブルに保存されています。
menu テーブルの形式は次の通りです。
#カラム名データ型内容
1menu_id整数 (int)メニュー番号
2category_id整数 (int)カテゴリ番号
3name文字列 (varchar)メニュー名
4price整数 (int)価格


次の【 注文の条件 】をすべて満たす注文内容を、次の【 並べ替えのルール 】にしたがって並べ替えて、すべて取得してください。

(※ ordered_menu テーブルから、条件を指定して取得してください。)

【 注文の条件 】
・注文時刻が 2021-12-17 17:00:00 以降
・注文したメニューが フライドポテト
 ・バケツポテトフライドポテト 類に含まれます。
・注文数が 2 個以上である

【 並べ替えのルール 】
・メニュー番号の昇順に並べ替える
・そして、メニュー番号が同じ場合は、注文数の降順に並べ替える

注文時刻や、メニューの情報は次の通りです。
SELECT id, datetime FROM ordered WHERE datetime >= "2021-12-17 17:00" ORDER BY datetime LIMIT 1;
id datetime
212 2021-12-17 17:00:00

SELECT * FROM category WHERE name = "サイドメニュー";
id name
2 サイドメニュー

SELECT id, name WHERE category_id = 2;
id name
10 フライドポテトS
11 フライドポテトM
12 フライドポテトL
13 バケツポテト
14 チキンナゲット
15 コーンサラダ
16 ハッシュドポテト


ヒント


WHERE カラム名 >= 値: カラム名 カラムの値が 以上のレコードを絞り込むことができる
WHERE カラム名 <= 値: カラム名 カラムの値が 以下のレコードを絞り込むことができる
WHERE カラム名 BETWEEN 値1 AND 値2: カラム名 カラムの値が 値1値2 の間に含まれるレコードを絞り込むことができる
WHERE 条件1 AND 条件2 AND ... AND 条件n: 条件1 かつ 条件2 かつ ... かつ 条件n の条件を満たすレコードを絞り込むことができる

入力例1
ordered_menu テーブル
ordered_idmenu_idnumsum
1141200
2211250
381350
............
出力例1
ordered_id menu_id num sum
432 10 2 300
411 10 2 300
415 10 2 300
...

問題一覧へ戻る

ページの先頭へ戻る