Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как вставить данные в две таблицы?  [new]
sacromento
Member

Откуда:
Сообщений: 17
У меня есть родительский класс:

[Subjects]:
-id int Identity Specification yes
-Deleted bit


И два дочерних:

[Juridical]:
-id int
-Name varchar
-typeid int

[Individual]:
-id int
-Name varchar


Соответсвующие строки в родительском и дочернем классах имеют один идентификатор.

Есть таблица с данными:

[MyTable]:
-typeid varchar
-Name varchar


Хочу заполнить три моих класса этими данными. Попробовал вот так:

INSERT INTO [Individual](Name)
OUTPUT false
INTO [Subjects].[Deleted]
SELECT [MyTable].[Name] as Name
  FROM [MyTable]
  WHERE [MyTable].[type] = 'ИП'


Но как оказалось OUTPUT предназначен не для таких целей.
Просто взять и вставать сначала в Individual и Juradical поле Name и затем скопировать из этих таблиц id в Subjects кажется мне плохой идеей, потому что если включить в них генерацию идентификаторов то придется выставлять в них генерацию с разных начальных значений и в итоге в Subjects модут появиться провалы в идентификаторов(например 1-50 и затем 67-...) что не очень красиво.

Как можно решить мою проблему, в какую сторону копать?
27 ноя 14, 10:17    [16912129]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные в две таблицы?  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
sacromento
модут появиться провалы в идентификаторов(например 1-50 и затем 67-...) что не очень красиво.
Это очень красиво
27 ноя 14, 10:20    [16912135]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные в две таблицы?  [new]
sacromento
Member

Откуда:
Сообщений: 17
Думаю вставлять сначала Deleted в таблицу Subjects, предварительно вручную посчитав количество требуемых записей, а затем уже записывать в Individuals.

Но наверника же есть какой-то бест практис в подобных ситуациях?
27 ноя 14, 10:23    [16912155]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные в две таблицы?  [new]
Glory
Member

Откуда:
Сообщений: 104751
sacromento
Но как оказалось OUTPUT предназначен не для таких целей.

Для каких "не таких" ?
Что это за false у вас в OUTPUT ?
27 ноя 14, 10:24    [16912156]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные в две таблицы?  [new]
sacromento
Member

Откуда:
Сообщений: 17
Glory,

false хотел как битовое значение вставить в Subjects.Deleted.

Но насколько я понял из статьи на msdn из output можно плучить только вставленные куда-либо данные и работать с ними дальше.
27 ноя 14, 10:27    [16912177]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные в две таблицы?  [new]
Glory
Member

Откуда:
Сообщений: 104751
sacromento
false хотел как битовое значение вставить в Subjects.Deleted.

А вы всегда сами придумываете объекты/типы/функции/константы языка программирования, который используете ?
27 ноя 14, 10:30    [16912192]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные в две таблицы?  [new]
sacromento
Member

Откуда:
Сообщений: 17
Glory,
[IMG]http://i60.tinypic.com/oivwpy.jpg[/IMG]

Не помогло(
27 ноя 14, 10:37    [16912231]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные в две таблицы?  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1887
declare @Subjects  table(id int identity(1,1) primary key, TempID int)
declare @Juridical table(id int primary key, Name varchar(100),TypeID varchar(10))
declare @Individual table(id int primary key, Name varchar(100))
declare @NewData table(id int identity(1,1),typeid varchar(10),name varchar(100))
declare @output table(id int,tempid int)

insert into @NewData(typeid,name) 
values('ИП','РОга и копыта'),('','Вася Пупкин'),('ЧП','LaLaLa'),('','Маша Пупкина')


insert into @Subjects(tempid)
output inserted.id,inserted.TempID into @output
select ID from @NewData 

insert into @Juridical(id,Name,TypeID)
select t.id,d.name,d.typeid
from @output t
join @NewData d on d.id = t.tempid
where d.typeid > ''

insert into @Individual(id,Name)
select t.id,d.name
from @output t
join @NewData d on d.id = t.tempid
where d.typeid = ''


select * from @Subjects
select * from @Juridical
select * from @Individual
27 ноя 14, 10:39    [16912243]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные в две таблицы?  [new]
Glory
Member

Откуда:
Сообщений: 104751
sacromento
Не помогло(

Откройте хелп и прочитайте про тип данных bit
А не выдумывайте конструкций, которые вписывыются в ваше восприятие мира SQL, но не существуют.
27 ноя 14, 10:41    [16912249]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные в две таблицы?  [new]
sacromento
Member

Откуда:
Сообщений: 17
Glory,

Ну если у человека с 100к сообщений хватает времени на работу кепа, то хорошо так и сделаю. )
27 ноя 14, 10:47    [16912291]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные в две таблицы?  [new]
Glory
Member

Откуда:
Сообщений: 104751
sacromento
Ну если у человека с 100к сообщений хватает времени на работу кепа, то хорошо так и сделаю. )

Еще один очередной позер, которому легче придумать свой ЯП, чем прочитать документацию уже существующего.
Вот почему вы вообще решили, что в TSQL существует false
27 ноя 14, 10:50    [16912312]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные в две таблицы?  [new]
sacromento
Member

Откуда:
Сообщений: 17
Glory,

Я даже не спорю, что я всегда путаю тип значений у bit.
Но, это наверное не повод показывать свою токсичность окружающим, не находите?
Если у вас утро не задалось, то тут явно изливание желчи не поможет.
27 ноя 14, 10:57    [16912351]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные в две таблицы?  [new]
Glory
Member

Откуда:
Сообщений: 104751
sacromento
Но, это наверное не повод показывать свою токсичность окружающим, не находите?
Если у вас утро не задалось, то тут явно изливание желчи не поможет.

Слушайте, "доктор", идите лечите других.
А лучше потратьте это время на изучение документации.
И еще вот это изучите http://www.yakimchuk.ru/questions.htm
А то все знают, для чего созданы форумы и как там все должны им отвечать.
27 ноя 14, 11:03    [16912380]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные в две таблицы?  [new]
sacromento
Member

Откуда:
Сообщений: 17
LexusR,

Спасибо, все получилось.


Glory,

Спасибо, мне не интересно.
27 ноя 14, 11:08    [16912398]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные в две таблицы?  [new]
Glory
Member

Откуда:
Сообщений: 104751
sacromento
Спасибо, мне не интересно.

Разумеется.
Вам бы что-нибудь, что можно просто скопипастить побыстрому.
Потому что форумы нужны для того, чтобы делать все за вас помогать бедным и несчастным
27 ноя 14, 11:10    [16912402]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить