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

SQL構文について質問いたします。

以下のように2つのテーブルがあるとします。
table1
コード|地域|商品
101|千葉|みかん
102|山梨|もも
103|静岡|お茶

table2
運搬者|伝票 |地域|商品
田中 |   |静岡|お茶
斉藤 |   |千葉|みかん

table1とtable2を比較し、「地域」と「商品」のカラムの値が両方とも一致した場合に、table1の「コード」の値が、table2の「伝票」カラムに転記されるSQL文を作成したいと思っています。
出力結果は以下のとおりになります。

table2
運搬者|伝票 |地域|商品
田中 |103|静岡|お茶
斉藤 |101|千葉|みかん


このような処理を一括で行う方法というのはあるのでしょうか?
もしご存知の方がいらっしゃいまいたら、アドバイスいただけると助かります。
何卒よろしくお願いいたします。

A 回答 (2件)

ちゃんと実行してないので、自信ないですが、雰囲気はこんな感じで



update
table2 t2
set
t2.伝票 = NVL((
select
max(t1.コード)
from
table1 t1
where
t2.地域 = t1.地域 and
t2.商品 = t1.商品
),'なし')
;

NVLしているのは、該当伝票がないときにエラーにならないように。
maxは、複数該当しちゃった場合に、一番大きいコードを使うように。

参考になれば、幸いです。
    • good
    • 0

例えばtable1にコード101のレコードがない場合


table2の「斉藤」のレコードは抽出対象になるのでしょうか?

対象になるなら LEFT/RIGHT JOIN、ならないなら INNER JOIN
を使って表を結合してください。

http://www.pursue.ne.jp/jouhousyo/SQLDoc/select1 …
    • good
    • 0

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