
■データテーブル
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としてどう書けばいいのかがわかりません。。。
よろしくお願いします。
No.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;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
select文のwhere句に配列を入れ...
-
クエリ表示と、ADOで抽出したレ...
-
エクセルの関数について教えて...
-
エラー 1068 (42000): 複数の主...
-
SQLサーバから、項目の属性(型...
-
ソート順の一番若い者を取得する
-
ストアドのエラーについて
-
”photo id” とは何ぞや?
-
PL/SQLの変数について
-
NOT INをNOT EXISTSで書き直したい
-
「SELECTして取得できない場合...
-
selectした大量データをinsert...
-
Postgreのupdateコマンドでエラー
-
Unionした最後にGROUP BYを追加...
-
WordpressのContact form 7でzi...
-
【Transact-sql】 execの結果を...
-
#1136 - Column count doesn't ...
-
メルペイとメルペイid決済の違...
-
Pro COBOLでは、最後執行したS...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLサーバから、項目の属性(型...
-
select文のwhere句に配列を入れ...
-
SQL Left Join で重複を排除す...
-
Access パラメータクエリをcsv...
-
マイクラPC版のコマンドで効率...
-
【Transact-sql】 execの結果を...
-
sqlで、600行あるテーブルを100...
-
SQLにて特定の文字を除いた検索...
-
1テーブル&複数レコードの更新...
-
PL/SQLの変数について
-
WordpressのContact form 7でzi...
-
複数テーブルのGROUP BY の使い...
-
バインド変数について
-
inner joinをすると数がおかし...
-
MySQLのint型で001と表示する方...
-
updateを1行ずつ実行したい。
おすすめ情報