問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
この問題は講座に含まれない発展的な内容を扱います。
MySQLのサブクエリには「相関サブクエリ」という種類のものがあります。
SELECT * FROM t1(MySQL公式ドキュメントより引用)
WHERE column1 = ANY (SELECT column1 FROM t2
WHERE t2.column2 = t1.column2);
(SELECT column1 FROM t2 WHERE t2.column2 = t1.column2)の部分にはテーブルt1に関する記述はありませんが、こういった場合は元のSELECT文からt1を見つけてきます。t1の各行に対して実行されます。column2の値がt1.column2の値と一致するものを絞り込み、t2.column1をカラムとしたテーブルを作るt1.column1の値がサブクエリで作られたテーブルに含まれれば(ANY句の処理)、そのレコードを出力する| # | カラム名 | データ型 | 内容 |
|---|---|---|---|
| 1 | ordered_id | 整数 (int) | 注文の通し番号 |
| 2 | datetime | 日時 (datetime) | 注文がおこなわれた日時 |
| 3 | bill | 整数 (int) | 注文の合計金額 |
| # | カラム名 | データ型 | 内容 |
|---|---|---|---|
| 1 | ordered_id | 整数 (int) | 注文の通し番号 |
| 2 | menu_id | 整数 (int) | メニュー番号 |
| 3 | num | 整数 (int) | メニューの注文数 |
| 4 | sum | 整数 (int) | 小計 |