私は3つのテーブルを2つの新しいテーブルに結合したいと思っています。現在のモデル:1つのソースから複数のテーブルにデータを挿入する
表X
Id Description A Entry 1X B Entry 2X C Entry 3X
表Y
Id Description 1 1Y 2 2Y 3 3Y
そして今、これらの2を連結する中間テーブルは、いくつかの組み合わせで一緒にあります:
表Z
IdX IdY Number1 Number2 A 1 1000 2000 A 2 300 400 A 3 790 7900 B 1 99 999 C 1 5000 500 C 3 250 2500
私がしたいことは、このデータを2つのテーブルに挿入することです。一方は中間に、もう一方はIdXとIdY(テーブル 'code')のすべての組み合わせを含んでいます。中間体には2つの外部キーが含まれ、これらの外部キーもPKの組み合わせです。 1つは従業員に、もう1つはテーブル「コード」に)。加えて、これらの2 FKのこのテーブルは、両方の新しいテーブルのテーブルZ.例の数字が含まれています:
表コードだから私は検索しました
IdEmployee IdCode Number1 Number2 Petersen 1 1000 2000 Petersen 3 790 7900 Benjamin 1 1000 2000 Benjamin 2 300 400
Benjamin 3 790 7900
中間
Id Description 1 Entry 1X - 1Y 2 Entry 1X - 2Y 3 Entry 1X - 3Y
表この特定の問題については、まったく同じ問題を見つけることはできませんでした。私が見つけた最も近いものは:How can I INSERT data into two tables simultaneously in SQL Server?
しかし、これは新しいテーブルのそれぞれに1つのレコードを持つ2つの新しいテーブルに挿入される約1つの古いレコードです。私がやっているのは、古い中間テーブルで見つかったXとYの組み合わせごとに新しいレコードをテーブル 'code'に挿入することです。次に、新しい中間レコードに新しいレコードを挿入して、 'code'のすべての新しいレコードをEmployeeテーブルのすべての既存レコードにリンクします。
insert into code (Id, Column1, Column2, Description)
OUTPUT inserted.Id INTO intermediate (codeId, EmployeeId, Z.Number1, Z.Number2)
select id,0,1,CONCAT(x.Description,' - ',y.Descritpion)
from dba.Z
left outer join dba.X as x on x.Id = IdX
left outer join dba.Y as y on y.Id = IdY
しかし、私は従業員のセットを持っていない原因これは動作しません:私は、これまでに得たもの
。誰も私に解決策を教えてもらえますか?または、私は本当にカーソルを使用する必要がありますか?
注:ソースを匿名データに変更しました。
どの従業員がどのレコードをどのレコードと結合するのか、どのように知っていますか?X、Y、Zのいずれにも従業員はいないようです。 –
すべての従業員がすべてのコードと組み合わされる必要があります。 – Jeffrey