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

Откуда:
Сообщений: 2
Всем доброго дня.
Ситуация следующая:
Имеется две таблицы Hotel и HotelPicture.
В таблице Hotel есть поля: HT_ID, HT_FirstPictureID.
В таблице HotelPicture - HP_ID, HP_HotelID, HP_GUID, HP_Size.
HP_HotelID = HT_ID; HT_FirstPictureID = HP_GUID.
У некоторых записей в таблице Hotel поле HT_FirstPictureID равно NULL. Для таких записей надо проверить, есть ли хотя бы одна картинка в таблице HotelPicture и если она есть, то присвоить HT_FirstPictureID значение HP_GUID.
Если картинок несколько, то присвоить тот HP_GUID, у которого самый большой HP_Size.

Подскажите, пожалуйста, как можно средствами MS SQL решить данную задачу?
Спасибо.)))
25 май 12, 15:15    [12615930]     Ответить | Цитировать Сообщить модератору
 Re: Изменение нескольких строк разными значениями  [new]
TimonDL
Member

Откуда:
Сообщений: 2
Сейчас пробую с помощью MARGE, пытаюсь разобраться.
25 май 12, 15:24    [12616008]     Ответить | Цитировать Сообщить модератору
 Re: Изменение нескольких строк разными значениями  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
UPDATE H
SET H.HT_FirstPictureID=(SELECT TOP(1) P.HP_GUID FROM HotelPicture P ORDER BY P.HP_Size DESC)
FROM  Hotel H
WHERE H.HT_FirstPictureID IS NULL
  AND EXISTS(SELECT * FROM HotelPicture);
Так что ли?
Странная задача, однако.
25 май 12, 18:29    [12617640]     Ответить | Цитировать Сообщить модератору
 Re: Изменение нескольких строк разными значениями  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
TimonDL,

а что такое "MARGE"?
25 май 12, 18:30    [12617648]     Ответить | Цитировать Сообщить модератору
 Re: Изменение нескольких строк разными значениями  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Или так?
UPDATE H
SET H.HT_FirstPictureID=P.HP_GUID
FROM  Hotel H
CROSS JOIN (SELECT TOP(1) HP_GUID FROM HotelPicture ORDER BY HP_Size DESC) P
WHERE H.HT_FirstPictureID IS NULL;
25 май 12, 19:03    [12617798]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить