以下のような構造の「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