受注一覧テーブル
SELECT * FROM order_master;
+----+------------+-----------+
| id | product_id | vendor_id |
+----+------------+-----------+
| 1 | 1 | 2 |
| 2 | 2 | 1 |
| 3 | 4 | 3 |
| 4 | 3 | 2 |
+----+------------+-----------+
商品一覧テーブル
SELECT * FROM product_master;
+----+----------------+
| id | product_name |
+----+----------------+
| 1 | 調味料A |
| 2 | 調味料B |
| 3 | 佃煮 |
| 4 | コーンフレーク |
+----+----------------+
配送業者テーブル
SELECT * FROM vendor_master;
+----+-------------+---------------------+
| id | vendor_name | contract_date |
+----+-------------+---------------------+
| 1 | 東京配送 | 2017-03-03 00:00:00 |
| 2 | なにわ屋 | 2017-05-03 00:00:00 |
| 3 | 桃山Express | 2018-03-03 00:00:00 |
+----+-------------+---------------------+
① 配送業者テーブル(vendor_master)から、有効期限内である業者からの受注情報を取得します。有効期限を判定するには、配送業者テーブル(vendor_master)の contract_date が今日よりも大きい日付であることを調べます。
② ①の結果取得される配送業者テーブル(vendor_master)を、RIGHT OUTER JOIN で受注一覧テーブル(order_master)と結合します。
③ ②の結果と商品一覧テーブル(product_master)を結合します。
SQL 文はこちらです。
SELECT o.id '注文 ID' ,o.product_id '商品 ID' ,p.product_name '商品名' ,v.vendor_name '配送業者' FROM order_master o RIGHT OUTER JOIN /*②の処理*/ (SELECT id, vendor_name FROM vendor_master WHERE contract_date > CURDATE()) v /*①の処理*/ ON o.vendor_id = v.id JOIN /*③の処理*/ product_master p ON o.product_id = p.id ;
0 件のコメント:
コメントを投稿