У меня есть 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. Один для сотрудника и один для таблицы «код»). Кроме того, эти 2 FK в этой таблице будет содержать номера таблицы Z. Пример как новых таблиц:
Таблица кода
Id Description 1 Entry 1X - 1Y 2 Entry 1X - 2Y 3 Entry 1X - 3Y
Таблица промежуточного
IdEmployee IdCode Number1 Number2 Petersen 1 1000 2000 Petersen 3 790 7900 Benjamin 1 1000 2000 Benjamin 2 300 400
Benjamin 3 790 7900
Так что я искал для этого конкретного вопроса, но не смог найти точно такую же проблему. Ближе всего я нашел: How can I INSERT data into two tables simultaneously in SQL Server?
Но это около 1 старой записи, которая вставлена в 2 новые таблицы с 1 записью в каждой новой таблице. То, что я делаю, это вставить новую запись в таблицу «code» для каждой комбинации X и Y, найденной в старой промежуточной таблице. Затем я хочу вставить новые записи в новую промежуточную таблицу, связывающую все новые записи в «коде» со всеми существующими записями в таблице 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