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

Откуда:
Сообщений: 193
Нужно обновить SubsidinaryID поле в двух таблицах, присвоив ему значение 34 для всех записей, у которых поле LOCALE одинаково в обеих таблицах и равно RU-ru.

table addressCatalogCountry
(
id numeric
LOCALE nchar(5)
NAME nvarchar(200)
SubdictionaryID smallint
CREATED datetime
MODIFIED datetime
)

AddressCatalogRegion
(
ID nimeric(10,0)
LOCALE nchar(5)
Parent_ID numeric(10,0)
NAME nvarchar(200)
Subdisidiary_id snallint
MODIFIED datetime
)

Первая со второй связаны один ко многим
29 авг 12, 20:43    [13085272]     Ответить | Цитировать Сообщить модератору
 Re: Как бы вы составили запрос?  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
НовыйЯ,

ошибка в постановке. Если во вторую таблицу ещё понятно как записать, то что делать с первой? Если addressCatalogCountry связана с AddressCatalogRegion один ко многим, то одной записи из addressCatalogCountry может соответствовать несколько записей из AddressCatalogRegion с разными значениями LOCALE. Что писать в addressCatalogCountry, если в ней LOCALE равно 'RU-ru', а в связанных записях AddressCatalogRegion одно значение LOCALE равно 'RU-ru', а второе - не равно?
29 авг 12, 21:07    [13085403]     Ответить | Цитировать Сообщить модератору
 Re: Как бы вы составили запрос?  [new]
Primus inter pares
Member

Откуда: Волшебная страна
Сообщений: 75
НовыйЯ
Как бы вы составили запрос?


Два запроса внутри транзакции. Как-то так:

BEGIN TRANSACTION 

UPDATE C 
    SET C.SubdictionaryID = 34
FROM addressCatalogCountry C, AddressCatalogRegion R 
WHERE C.LOCALE = R.LOCALE AND C.LOCALE =  'RU-ru'

UPDATE R 
    SET R.Subdisidiary_id = 34
FROM addressCatalogCountry C, AddressCatalogRegion R 
WHERE C.LOCALE = R.LOCALE AND C.LOCALE =  'RU-ru'

COMMIT 
30 авг 12, 08:19    [13086411]     Ответить | Цитировать Сообщить модератору
 Re: Как бы вы составили запрос?  [new]
НовыйЯ
Member

Откуда:
Сообщений: 193
Serg_77m
НовыйЯ,

ошибка в постановке. Если во вторую таблицу ещё понятно как записать, то что делать с первой? Если addressCatalogCountry связана с AddressCatalogRegion один ко многим, то одной записи из addressCatalogCountry может соответствовать несколько записей из AddressCatalogRegion с разными значениями LOCALE. Что писать в addressCatalogCountry, если в ней LOCALE равно 'RU-ru', а в связанных записях AddressCatalogRegion одно значение LOCALE равно 'RU-ru', а второе - не равно?

Ну вот и я решил "то ли лыжи не едут, то ли я долбанутый" :)
30 авг 12, 10:17    [13086798]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить