Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Манипуляция данными в связанных таблицах  [new]
taaamerlan
Member

Откуда: Ukraine, Donetsk
Сообщений: 462
Я создал две таблицы. Это таблицы пользователей. Одна таблица для авторизации и регистрации (т.е. там пароль, логин, емаил и конечно ID), а другая с личными данными и там тоже есть поле с ID. Они связанны по первичному ключу ID. Как теперь в них пихать данные? Как регистрировать в одной таблице пользователя, так чтобы сразу появлялась аналогичная по ID запись для второй таблицы? Полностью SQL Server изучать пока не могу. Сейчас все на великах делаю. Поможите?
24 янв 13, 16:45    [13822851]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Данные в таблицу вставляются командой insert.

Сообщение было отредактировано: 24 янв 13, 16:48
24 янв 13, 16:48    [13822865]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
Как регистрировать в одной таблице пользователя


Инструкцией INSERT.

автор
так чтобы сразу появлялась аналогичная по ID запись для второй таблицы?


использую кляузу OUTPUT первой инструкции.
24 янв 13, 16:51    [13822882]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Если они связаны по PK, то зачем две таблицы?
24 янв 13, 16:55    [13822899]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
taaamerlan
Member

Откуда: Ukraine, Donetsk
Сообщений: 462
iap,
а зачем в одну таблицу всю информацию пихать? У нас не будет нужды брать все данные. Нам будут нужны дибо регистрационные либо персональные данные
24 янв 13, 17:41    [13823203]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
taaamerlan
Member

Откуда: Ukraine, Donetsk
Сообщений: 462
pkarklin,а можно подробнее, как ее использовать для достижения поставленной задачи?
24 янв 13, 17:43    [13823224]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
taaamerlan
pkarklin,а можно подробнее, как ее использовать для достижения поставленной задачи?
Согласно ее синтаксису.
24 янв 13, 18:02    [13823366]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
taaamerlan
Member

Откуда: Ukraine, Donetsk
Сообщений: 462
Гавриленко Сергей Алексеевич, понял, покопаюсь)
24 янв 13, 18:34    [13823584]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
taaamerlan
iap,
а зачем в одну таблицу всю информацию пихать? У нас не будет нужды брать все данные. Нам будут нужны дибо регистрационные либо персональные данные
И не берите лишнее. Кто заставляет брать?
24 янв 13, 20:19    [13823997]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
iap
Если они связаны по PK, то зачем две таблицы?
Ну в этом иногда бывает смысл. Но конечно не стоит городить огород, когда уровень познаний стремится к нулю. В данном случае хватит одной таблицы, а освободившееся свободное время можно потратить на изучение комманд SQL.
24 янв 13, 21:25    [13824233]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
taaamerlan
Member

Откуда: Ukraine, Donetsk
Сообщений: 462
Mind, я делаю научную работу, которую еще год буду доделывать. Я думаю лучше сразу сделать более менее нормальную архитектуру БД, чем потом ее переделывать. Написанные велосипеды я быстро смогу переделать, когда узнаю, как нужно, а архитектуру БД нет
26 янв 13, 10:29    [13832339]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
taaamerlan
Я создал две таблицы. Это таблицы пользователей. Одна таблица для авторизации и регистрации (т.е. там пароль, логин, емаил и конечно ID), а другая с личными данными и там тоже есть поле с ID. Они связанны по первичному ключу ID. Как теперь в них пихать данные? Как регистрировать в одной таблице пользователя, так чтобы сразу появлялась аналогичная по ID запись для второй таблицы? Полностью SQL Server изучать пока не могу. Сейчас все на великах делаю. Поможите?
один в один как - в посте 13721072
26 янв 13, 10:48    [13832366]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
taaamerlan
Member

Откуда: Ukraine, Donetsk
Сообщений: 462
Можно вопрос не по теме? Думаю у меня какая-то простая ошибка. Почему здесь в присваивании выбивает неверный синтаксис?
DECLARE @Inserted TABLE
(
		UserID INT  
)
DECLARE @InsID INT

INSERT Users 
OUTPUT INSERTED.UserID INTO @Inserted    
VALUES
           ('Tamrlan'
           ,'figsppam'
           ,'tm@gm.coom')
@InsID = @inserted.UserID
INSERT INTO [ps].[dbo].[UserInfo]
           ([UserID])
     VALUES
           (@InsID)              
GO
26 янв 13, 11:05    [13832381]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
taaamerlan
Можно вопрос не по теме? Думаю у меня какая-то простая ошибка. Почему здесь в присваивании выбивает неверный синтаксис?
+
DECLARE @Inserted TABLE
(
		UserID INT  
)
DECLARE @InsID INT

INSERT Users 
OUTPUT INSERTED.UserID INTO @Inserted    
VALUES
           ('Tamrlan'
           ,'figsppam'
           ,'tm@gm.coom')
@InsID = @inserted.UserID
INSERT INTO [ps].[dbo].[UserInfo]
           ([UserID])
     VALUES
           (@InsID)              
GO
@Inserted - это таблица с тремя строками (после вставки в users)
26 янв 13, 11:10    [13832384]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
taaamerlan
Member

Откуда: Ukraine, Donetsk
Сообщений: 462
Cygapb-007, нет, в этой функции один столбец INSERTED.UserID (я даже проверил, хотя и так был уверен) и в этом столбце одна запись т.к. инструкцию мы выполнили один раз. Вот я и хочу эту запись присвоить скалярной переменной
@InsID = @inserted.UserID

но, видимо, это не так делаеться
26 янв 13, 11:19    [13832394]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
taaamerlan
Member

Откуда: Ukraine, Donetsk
Сообщений: 462
*делается
26 янв 13, 11:20    [13832396]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
taaamerlan
Member

Откуда: Ukraine, Donetsk
Сообщений: 462
что-то я часто опечатываюсь)
в этой таблице один столбец INSERTED.UserID (я даже проверил, хотя и так был уверен) и в этом столбце одна запись т.к. инструкцию мы выполнили один раз. Вот я и хочу эту запись присвоить скалярной переменной
@InsID = @inserted.UserID


но, видимо, это не так делается
26 янв 13, 11:26    [13832414]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
--insert into slave (..)
select * from @inserted
Если же надо, по каким-то причинам, сохранить значение из таблицы в переменную, то надо помнить, что значения всех строк таблицы в одну переменную не записать никак.
Можно выдернуть из @inserted только одно (из трех) значение:
select top(1) @id=id from @inserted
и использовать его для вставки в slave, но тогда будут потеряны значения для остальных строк, добавленных в masters (в users)
26 янв 13, 11:46    [13832457]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
taaamerlan
Cygapb-007, нет, в этой функции один столбец INSERTED.UserID (я даже проверил, хотя и так был уверен) и в этом столбце одна запись т.к. инструкцию мы выполнили один раз. Вот я и хочу эту запись присвоить скалярной переменной
@InsID = @inserted.UserID

но, видимо, это не так делаеться
Инструкцию выполнили один раз, но в самой инструкции мы могли бы добавить не одну а несколько строк, и все эти строки автоматически попали бы в @inserted - не надо использовать переменную, это место возникновения ошибок в дальнейшем.
Самое надежное - использовать вставку из таблицы, как это и сделано в исходном примере, не изобретайте кривых велосипедов:)
26 янв 13, 11:51    [13832466]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
а, я понял в чем проблема
INSERT INTO [ps].[dbo].[UserInfo]
           ([UserID],field2,field3)
   select i.InsID, @value2, @value3
   from @inserted i
26 янв 13, 11:59    [13832484]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
taaamerlan
Member

Откуда: Ukraine, Donetsk
Сообщений: 462
Cygapb-007
а, я понял в чем проблема
INSERT INTO [ps].[dbo].[UserInfo]
           ([UserID],field2,field3)
   select i.InsID, @value2, @value3
   from @inserted i


Как это работает?
26 янв 13, 12:27    [13832538]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
taaamerlan
iap,
а зачем в одну таблицу всю информацию пихать? У нас не будет нужды брать все данные. Нам будут нужны дибо регистрационные либо персональные данные


А в чем проблема в этом случае, если все же использовать одну таблицу?
Ты можешь в каждом случае в запросе брать только нужные тебе поля.
26 янв 13, 12:34    [13832553]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
taaamerlan
Member

Откуда: Ukraine, Donetsk
Сообщений: 462
MasterZiv, я знаю, что могу, но если в таблица будет меньшей по размеру, то выборка данных будет идти быстрее. Давайте перестанем обсуждать мое решение разделить данные на две таблицы и кто-нибудь мне поможет впихнуть запись с Id дополнительно во вторую таблицу. Я просто не знаю как выдернуть запись из таблицы и засунуть в переменную
26 янв 13, 12:38    [13832565]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
taaamerlan, ведь отвечал уже - 13832457
select top(1) @InsID = UserID from @inserted
26 янв 13, 13:39    [13832684]     Ответить | Цитировать Сообщить модератору
 Re: Манипуляция данными в связанных таблицах  [new]
taaamerlan
Member

Откуда: Ukraine, Donetsk
Сообщений: 462
Cygapb-007, почему-то я это не заметил) Спасибо большое)
26 янв 13, 13:49    [13832713]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить