複合的な条件を指定して取得しよう (Part 2) MySQL編(paizaランク C 相当)
問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
問題
下記の問題をプログラミングしてみよう!
※ この問題集は、動画講座『新・SQL入門編3: WHERE句を理解しよう』で学習した内容について反復して練習できるドリルです。分からないことがあれば、動画に戻って復習してみてください。
注文内容が oredered_menu テーブルに保存されています。
ordered_menu テーブルの形式は次の通りです。
# | カラム名 | データ型 | 内容 |
---|
1 | ordered_id | 整数 (int) | 注文の通し番号 |
2 | menu_id | 整数 (int) | メニュー番号 |
3 | num | 整数 (int) | メニューの注文数 |
4 | sum | 整数 (int) | 小計 |
注文履歴が ordered テーブルに保存されています。
ordered テーブルの形式は次の通りです。
# | カラム名 | データ型 | 内容 |
---|
1 | ordered_id | 整数 (int) | 注文の通し番号 |
2 | datetime | 日時 (datetime) | 注文がおこなわれた日時 |
3 | bill | 整数 (int) | 注文の合計金額 |
カテゴリが category テーブルに保存されています。
category テーブルの形式は次の通りです。
# | カラム名 | データ型 | 内容 |
---|
1 | category_id | 整数 (int) | カテゴリ番号 |
2 | name | 文字列 (varchar) | カテゴリ名 |
メニューが menu テーブルに保存されています。
menu テーブルの形式は次の通りです。
# | カラム名 | データ型 | 内容 |
---|
1 | menu_id | 整数 (int) | メニュー番号 |
2 | category_id | 整数 (int) | カテゴリ番号 |
3 | name | 文字列 (varchar) | メニュー名 |
4 | price | 整数 (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 FROM menu 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_id menu_id num sum
432 10 2 300
411 10 2 300
415 10 2 300
...
問題一覧へ戻る