重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

■データテーブル
id name weight
1 apple 1
2 apple2 3
3 apple3 5

■weightテーブル
weight fee
1 20
2 30
3 40
4 50
5 60

■weight個別設定テーブル ... weightテーブルとは違って特別に設定したいデータidだけ登録
data_id fee
3 30

上記のような3つのテーブルを結合して、各商品名(データテーブルのname)ごとのfeeを出したいです。通常はweigthテーブルからfeeを取るのですが、weight個別設定テーブルにデータがあった場合はそちらを優先したい。

結果として、

name weight fee
apple 1 20
apple2 3 40
apple3 5 30 ← weight個別設定テーブルで指定されてる値


これを実現するためにsqlとしてどう書けばいいのかがわかりません。。。
よろしくお願いします。

A 回答 (1件)

こんな感じです



//元データ
create table tbl1(id int unique, name varchar(10), weight int);
insert into tbl1 values(1,'apple',1),(2,'apple2',3),(3,'apple3',5);

create table tbl2(weight int unique, fee int);
insert into tbl2 values(1,20),(2,30),(3,40),(4,50),(5,60);

create table tbl3(data_id int unique,fee int);
insert into tbl3 values(3,30);

//抽出
select t1.id,t1.name,t1.weight,coalesce(t3.fee,t2.fee) as fee
from tbl1 as t1
inner join tbl2 as t2 on t1.weight=t2.weight
left join tbl3 as t3 on t1.id=t3.data_id;
    • good
    • 0
この回答へのお礼

ありがとうございます!できました!!
coalesceというのがあったんですね。

お礼日時:2017/03/18 01:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す