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

Откуда:
Сообщений: 136
Добрый день.

Имеется такой запрос:

select T.id as virtual_ID, ob.ID as real_ID,
ob.mcod, ob.sn_pol,  ob.d_u , ob.otd, ob.ds, ob.prupp, Profiles.PRNAME, kmu.name, kmu.code 
from 
Uslugi ob inner join Profiles on IDPR=ob.prupp 
inner join kmu on  cod=code 
left outer join 
(select ob.srecid as ID, ob.ds as Tds, ob.sn_pol as Tsnpol, ob.d_u as Tdu from Obrashenie ob, Profiles, kmu
where  IDPR=ob.prupp
and cod=code
and sn_pol='2512454845487'
and cod in (50003, 50004)
) T on T.Tsnpol=sn_pol and T.Tds=ds and ob.d_u >= T.Tdu 

where  
sn_pol='2512454845487' and
cod not in (50003, 50004)
and (ob.cod between 1000 and 1999)

group by T.id,ob.ID, ob.srecid,  ob.precid, ob.cod,
ob.mcod, ob.sn_pol,  ob.d_u , ob.otd, ob.ds, ob.prupp, Profiles.PRNAME, kmu.name, kmu.code
order by  mcod, sn_pol,T.ID, d_u , ob.otd, ob.prupp, ds


На выходе он дает такую таблицу (приведу только несколько столбцов):


virtual_ID	real_ID	   mcod
 18052	        NULL	   0301003
 18052        	NULL	   0301003
 23735	        NULL	   0301003
 23735	        NULL	   0301003
 NULL           NULL	   2101017


Столбец virtual_id является виртуальным, вычисленным на основе запроса. Мне надо данные из этого столбца перенести в существующий столбец(real_id) определенной таблицы (Uslugi ) в том порядке, что получился на основе запроса, то есть как в Excel - выделил столбец, вставил в нужный. Каким образом можно осуществить подобное обновление?
30 июл 14, 07:21    [16374587]     Ответить | Цитировать Сообщить модератору
 Re: Обновление столбца таблицы значением из другого столбца  [new]
Mdel
Member

Откуда:
Сообщений: 136
Забыл добавить:
Я пробовал сделать так:

Обозначил весь запрос как Q и сделал Update:
[src]update Uslugi set ID = Q.virtID
from (мой запрос) Q
[/SRC]

В MS Access такое прокатило и проставились коды. В SQL server проставил ерунду.
30 июл 14, 07:40    [16374608]     Ответить | Цитировать Сообщить модератору
 Re: Обновление столбца таблицы значением из другого столбца  [new]
случайно заглянул
Guest
Что значит "проставил ерунду"? И что означает фраза "в том порядке, что получился на основе запроса"? Порядок в SQL Server определяется с помощью ORDER BY.
30 июл 14, 09:07    [16374785]     Ответить | Цитировать Сообщить модератору
 Re: Обновление столбца таблицы значением из другого столбца  [new]
Mdel
Member

Откуда:
Сообщений: 136
случайно заглянул
Что значит "проставил ерунду"?

Это значит, что когда в Access я проставлял соответствие простым запросом update Tbl set A=B (оба поля из одной таблицы), то проставилось верно. А когда я делал в SQL через запрос, то в поле проставился один код всем =1.
30 июл 14, 11:01    [16375350]     Ответить | Цитировать Сообщить модератору
 Re: Обновление столбца таблицы значением из другого столбца  [new]
случайно заглянул
Guest
Наверное сервер жульничает? Давайте тестовые данные и ваш запрос с ними.
30 июл 14, 11:10    [16375449]     Ответить | Цитировать Сообщить модератору
 Re: Обновление столбца таблицы значением из другого столбца  [new]
o-o
Guest
кто жульничает-то?
а таблицы между собой связывать при апдейте кто будет?
свои Uslugi как минимум заджойните с результатом по всем тем полям, что в group by идут с ob:
ob.mcod, ob.sn_pol, ob.d_u , ob.otd, ob.ds, ob.prupp
30 июл 14, 11:15    [16375518]     Ответить | Цитировать Сообщить модератору
 Re: Обновление столбца таблицы значением из другого столбца  [new]
случайно заглянул
Guest
Точно! Второй запрос-то с апдейтом я и не приметил особо :)
А про жульничанье это была ирония :)
30 июл 14, 11:20    [16375563]     Ответить | Цитировать Сообщить модератору
 Re: Обновление столбца таблицы значением из другого столбца  [new]
o-o
Guest
а я на настоящего жулика укзываю :)
ну и там еще поля для соединения строкой выше: ob.srecid, ob.precid, ob.cod
30 июл 14, 11:30    [16375669]     Ответить | Цитировать Сообщить модератору
 Re: Обновление столбца таблицы значением из другого столбца  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mdel
А когда я делал в SQL через запрос, то в поле проставился один код всем =1.

Потому, что вы не указали никаких условий соединения
update Uslugi set ID = Q.virtID from (мой запрос) Q
Вы думаете, чото сервер сам должен эти условия выбрать ?
30 июл 14, 14:00    [16376961]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить