QA@IT
«質問へ戻る

質問を投稿

SQL文の更新処理を教えてください(Oracle 12C)

2つのユーザー:user1の「TABLE1」と、user2の「TABLE2」という表があります。
TABLE1のカラムは、pk1(主キー), pk2(主キー), pk3(主キー), NOTE1(nvarchar2)です。
TABLE2のカラムは、pk1(主キー), pk2(主キー), NOTE2(nvarchar2)です。

user1.TABLE1
  pk1  pk2  pk3 NOTE1(varchar2)
  1   1   1   aaaaaaaaaa    ←長さ3以上
  1   2   1   bbbb    ←長さ3以上
  2   1   1   c
  2   2   1   dddddddddd    ←長さ3以上
  2   2   2   eeee    ←長さ3以上
・・・

user2.TABLE2
 pk1 pk2  NOTE2(nvarchar2)
 1   1    hhhhhh
 1   2    k
 2   1    mmmmmmmmmm
 2   2    nn
 ・・・

上記のようなテーブルが2つあるとき、user1.TABLE1のNOTE1の長さが3以上の場合
対応する主キーのuser2.TABLE2のNOTE2末尾に、NOTE1の内容を追記するという処理を考えています。
(TABLE1で複数レコード引っかかるときは、pk1,pk2,pk3の降順に追記されていく)

上記の例だと、期待結果はTABLE2が下記になります。

user2.TABLE2
 pk1  pk2  NOTE2(nvarchar2)
 1   1    hhhhhhaaaaaaaaaa ←追記された
 1   2    kbbbb   ←追記された
 2   1    mmmmmmmmmm
 2   2    nnddddddddddeeee ←2つ追記された
 ・・・

しかしそのSQL文をどのように記述すれば良いかわからず、どなたかご教示いただけないでしょうか。

よろしくお願い致します。

2つのユーザー:user1の「TABLE1」と、user2の「TABLE2」という表があります。
TABLE1のカラムは、pk1(主キー), pk2(主キー), pk3(主キー), NOTE1(nvarchar2)です。
TABLE2のカラムは、pk1(主キー), pk2(主キー), NOTE2(nvarchar2)です。


user1.TABLE1
 	pk1	 pk2 	pk3	NOTE1(varchar2)
 	1  	1  	1  	aaaaaaaaaa  	 ←長さ3以上
 	1  	2  	1  	bbbb   	←長さ3以上
 	2  	1  	1  	c
 	2  	2  	1  	dddddddddd   	←長さ3以上
 	2  	2  	2  	eeee   	←長さ3以上
	・・・

user2.TABLE2
 pk1 pk2  NOTE2(nvarchar2)
 1	  1  	 hhhhhh
 1	  2	   k
 2	  1	   mmmmmmmmmm
 2	  2	   nn
 ・・・

上記のようなテーブルが2つあるとき、user1.TABLE1のNOTE1の長さが3以上の場合
対応する主キーのuser2.TABLE2のNOTE2末尾に、NOTE1の内容を追記するという処理を考えています。
(TABLE1で複数レコード引っかかるときは、pk1,pk2,pk3の降順に追記されていく)

上記の例だと、期待結果はTABLE2が下記になります。

user2.TABLE2
	 pk1  pk2  NOTE2(nvarchar2)
	 1   1    hhhhhhaaaaaaaaaa ←追記された
	 1   2    kbbbb   ←追記された
	 2   1    mmmmmmmmmm
	 2   2    nnddddddddddeeee **←2つ**追記された
 ・・・


しかしそのSQL文をどのように記述すれば良いかわからず、どなたかご教示いただけないでしょうか。

よろしくお願い致します。