Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как во время INSERT'а проставить связи с существующими данными? / 5 сообщений из 5, страница 1 из 1
20.12.2018, 18:16
    #39751006
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во время INSERT'а проставить связи с существующими данными?
Table_A:
ID Name1 Пётр4 Иван7 Николай
Table_B:
ID Name
Table_A_B
ID_A ID_B

Выполняю
Код: sql
1.
2.
3.
4.
INSERT INTO Table_B(Name)
SELECT Name
FROM Table_A
WHERE какие-нибудь условия, чтобы скопировалось не всё, а только нужная часть



Задача : одновременно с этим запросом должны заполниться две таблицы:

Table_B:
ID Name21 Пётр22 Иван23 Николай
Table_A_B
ID_A ID_B1 214 227 23
Как? Нужно просто скопировать данные из одной таблицы в другую и настроить связи между ними в третьей таблице, которая реализует логику "многие ко многим".
...
Рейтинг: 0 / 0
20.12.2018, 18:38
    #39751017
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во время INSERT'а проставить связи с существующими данными?
А, принцип понял.
Как всегда - искал-искал, а как только опубликовал, нашёл ответ
https://docs.microsoft.com/ru-ru/sql/t-sql/queries/output-clause-transact-sql?view=sql-server-2017
...
Рейтинг: 0 / 0
20.12.2018, 18:42
    #39751019
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во время INSERT'а проставить связи с существующими данными?
хотя всё равно не понятно... output вернёт мне просто кучу изменённых данных.
...
Рейтинг: 0 / 0
20.12.2018, 19:07
    #39751031
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во время INSERT'а проставить связи с существующими данными?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
declare @A table( id int identity, N nvarchar(32));

declare @B table( id int identity(-1, -1), N nvarchar(32));

declare @AB table( idA int, idB int);

declare @tmp table( id int, N nvarchar(32));

delete @tmp;

insert @A
  output inserted.id, inserted.N into @tmp(id, N)
  values(N'Пётр'), (N'Иван')
;

merge @b as b using @tmp as x on 1=2
  when not matched then insert(n) values(n)
  output x.id, inserted.id into @AB(idA, idB) 
;

select * from @A;

select * from @B;

select * from @AB;
...
Рейтинг: 0 / 0
21.12.2018, 17:52
    #39751481
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во время INSERT'а проставить связи с существующими данными?
очень круто!!!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как во время INSERT'а проставить связи с существующими данными? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]