0

以下のような構造の「Order」と「OrderDetails」の 2 つのテーブルがあります。Order.id は OrderDetails の外部キーです。

同じ構造が 3 つの異なる地域のデータベースに存在します。

3 つの地域テーブルを 1 つにマージする必要があります。すなわち (2*3=6 テーブルから 2 テーブルへ)

Order.id はすべての地域で複製できます

例えば:

region1DB.Order.id{1,2,3,4,5} 、 region2DB.order.id{1,2,3,4,5}

テーブル構造

ここに画像の説明を入力

すべての関係を含む、3 つのデータベースからのデータを含む 2 つのテーブルの最終出力が必要です。

例: 最初のリージョン テーブルに 10 個の orderid がある場合、2 番目のリージョン order.id からのデータをマージすると、11,12,13 (2 番目のリージョンでは実際の数は 1,2,3,4) で開始/更新されます。 Orderdeatils も反映されるはずです。

このマージのクエリを手伝ってもらえますか? またはSQLマージのような利用可能な他の最新の技術はありますか? はいの場合は、サンプルをください。

私はSQLが初めてで、リレーションシップテーブルをマージする完璧な例を見ることができませんでした.

これが最初のテーブルに参加するための私のクエリです

select  tab1.ID, tab1.OrderName
from [DB1].[dbo].[Order] tab1
union all
select tab2.id + (select max(id) from [DB1].[dbo].[Order]) ,tab2.OrderName
from [DB2].[dbo].[Order] tab2

-> 2 番目のテーブルをマージするためのクエリ (OrderDetails)

declare @t varchar(8000)

set @t=(select max(id) from [DB1].[dbo].[Order]) [DB1].[dbo].[OrderDetails] タブ 1 から

select tab1.OrderID, tab1.productCode from [DB1].[dbo].[OrderDetails] tab1

union all

select

case when

tab2.OrderID> (@t) then tab2.OrderID + (@t)

when

tab2.OrderID<=(@t) then tab2.OrderID

END

,tab2.productCode

from [DB2].[dbo].[OrderDetails] tab2

order by OrderID

ありがとう

SNA

4

1 に答える 1