環境
データベース:MySQL
やりたいこと
■下記のようなテーブルがあります。
<商品マスタ>
商品名 | 商品ID | ジャンル |
---|---|---|
タケノコ | 1 | 野菜 |
ミカン | 2 | 果物 |
<野菜_価格_テーブル>
商品ID | 価格 |
---|---|
1 | 1,100 |
2 | 2,200 |
<果物_価格_テーブル>
商品ID | 価格 |
---|---|
1 | 12,100 |
2 | 23,200 |
この時、「商品マスタ.ジャンル」によって結合するテーブルを切り替えたいです。
完成想定図は以下の通りです。
<結合後のテーブル>
商品マスタ.商品名 | 商品マスタ.商品ID | 商品マスタ.ジャンル | 価格テーブル.商品ID | 価格テーブル.価格 |
---|---|---|---|---|
タケノコ | 1 | 野菜 | 1 | 1,100 |
ミカン | 2 | 果物 | 2 | 23,200 |
SQL
CASE文がFROM内でも使えると聞き、下記のようにしましたが、エラーとなってしまいました。
■参考サイト:SQLでJOINするカラムを条件分岐させようとした話
SQL
1SELECT * 2FROM `商品マスタ` AS `master` 3LEFT JOIN 4(CASE 5 WHEN `master`.`ジャンル`='野菜' THEN `野菜_価格_テーブル` 6 ELSE `果物_価格_テーブル` 7END) AS `価格テーブル` 8ON `価格テーブル`.`商品ID`=`master`.`商品ID`
どう修正したら、1回のSQLで、かつ、結合先のテーブルを切り分けることができるのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/28 14:39
2021/10/28 20:34