サブクエリをIN演算子と使う 3 MySQL編(paizaランク C 相当)
問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
問題
下記の問題をプログラミングしてみよう!
注文履歴がordered テーブルに、注文内容がordered_menu テーブルに、メニューがmenu テーブルに保存されています。
テーブルの形式は次の通りです。
ordered
| # | カラム名 | データ型 | 内容 |
|---|
| 1 | ordered_id | 整数 (int) | 注文の通し番号 |
| 2 | datetime | 日時 (datetime) | 注文がおこなわれた日時 |
| 3 | bill | 整数 (int) | 注文の合計金額 |
ordered_menu
| # | カラム名 | データ型 | 内容 |
|---|
| 1 | ordered_id | 整数 (int) | 注文の通し番号 |
| 2 | menu_id | 整数 (int) | メニュー番号 |
| 3 | num | 整数 (int) | メニューの注文数 |
| 4 | sum | 整数 (int) | 小計 |
menu
| # | カラム名 | データ型 | 内容 |
|---|
| 1 | menu_id | 整数 (int) | メニュー番号 |
| 2 | category_id | 整数 (int) | カテゴリ番号 |
| 3 | name | 文字列 (varchar) | メニュー名 |
| 4 | price | 整数 (int) | 価格 |
`ア`から始まるメニューを含む注文をしたレコードを、orderedテーブルから全て取得してください。
デフォルトコードの穴埋め部分に適切なサブクエリを記述してください。
ヒント
・
WHERE カラム名 IN (サブクエリ):
カラム名 カラムの値が
サブクエリ テーブルのいずれかであるレコードを絞り込むことができる
・IN演算子と共に使うサブクエリは、単一カラムで複数行の値を返すことができる
・
WHERE カラム名 LIKE 値%:
カラム名 カラムの値が
値 で始まるレコードを絞り込むことができる
・サブクエリの中にサブクエリを書くこともできます。
・サブクエリ内の処理は「サブクエリをIN演算子と使う 1」の全文とほとんど同じですが、IN演算子と使うために少し変える必要があります。
- 出力例1
-
ordered_id datetime bill
9 2021-12-17 10:40:00 700
13 2021-12-17 10:56:00 250
14 2021-12-17 10:59:00 1150
...
問題一覧へ戻る