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

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

есть 2 таблицы
Users: IDUser, SomeDataUser
Polis: IDPolis, IDUser, SomeDataPolis
связаны таблицы по IDUser (1 ко многим)

мне необходимо перенести данные из столбца SomeDataUser таблицы Users
в столбец SomeDataPolis таблицы Polis
при условии что SomeDataUser не пустой (иначе оставить столбец SomeDataPolis в таблице Polis без изменений)

я пробовал так

update Polis
set SomeDataPolis = (select SomeDataUser from Users where Users.IDUser = Polis.IDUser and Users.SomeDataUser <> '')

однако SomeDataPolis обновляется (обнуляется в моем случае) даже если поле SomeDataUser пустое.

а вот так работает вроде

update Polis 
set Polis.SomeDataPolis = Users.SomeDataUser
from Users inner join Polis on users.IDUser = Polis.IDUser 
where Users.SomeDataUser <> '' 

насколько я понимаю, эти запросы одинаковы? тогда почему второй работает а первый нет?
или второй запрос в корне неправильный? или update...from рабоатет как-то избирательно?...

спасибо заранее.
26 сен 11, 22:02    [11338465]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104751
Users.SomeDataUser is not NULL
26 сен 11, 22:12    [11338493]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
zaebiz
Member

Откуда:
Сообщений: 3
Glory
Users.SomeDataUser is not NULL


поменял условие на Ваше в первом варианте запроса - не помогло....
уточню:
поле SomeDataUser типа varchar. оно может как иметь значение NULL так и просто быть пустой строкой.
мне необходимо чтобы в таблицу Polis данные переносились только если поле SomeDataUser непустое.
26 сен 11, 22:24    [11338545]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
serguei russky
Member

Откуда: Las Vegas
Сообщений: 89
zaebiz,
а вы попробовали не update, а select statement.
по-моему все прояснится если запустить:

SELECT SomeDataPolis , (select SomeDataUser from Users where Users.IDUser = Polis.IDUser and Users.SomeDataUser <> '')
FROM polis

По крайней мере, вы увидите, что подзапрос возврщает, а потом можно подумать почему.
26 сен 11, 22:32    [11338572]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
zaebiz
Member

Откуда:
Сообщений: 3
serguei russky
zaebiz,
а вы попробовали не update, а select statement.
по-моему все прояснится если запустить:

SELECT SomeDataPolis , (select SomeDataUser from Users where Users.IDUser = Polis.IDUser and Users.SomeDataUser <> '')
FROM polis

По крайней мере, вы увидите, что подзапрос возврщает, а потом можно подумать почему.


сделал select по обоим запросам.
увидел ращзные результаты.
думаю разобрался. спасибо.
26 сен 11, 23:13    [11338717]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить