Update...

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Update...

Re: Update...

ustas » 24 июл 2009, 19:05

Ashok писал(а):Спасибо большое! Буду пробовать.
Ошибку выдает:
Incorrect syntax near the keyword 'as'.
убери "as tb_org1" из скрипта и вместо "tb_org1" пиши явно "dbo.tb_org"

Re: Update...

Ashok » 21 май 2009, 13:35

Спасибо большое! Буду пробовать.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Naeel Maqsudov писал(а):Поможет коррелированный UPDATE. Т.е. выражение SET должно содержать коррелированный подзапрос

update dbo.tb_org as tb_org1
set is_sps = (select id_sps from dbo.tb_sps where Org=tb_org1.s_FullName);

При этом надо гарантировать уникальность значений в поле Org, иначе запрос прорвёт где-то на середине.
Если вдруг дубликаты есть, то их можно исключить используя агрегирование или директиву TOP N (Если я не ошибаюсь, у MSSQL она должна поддерживаться)

т.е. например:

update dbo.tb_org as tb_org1
set is_sps = (select min(id_sps) from dbo.tb_sps where Org=tb_org1.s_FullName);

или

update dbo.tb_org as tb_org1
set is_sps = (select top 1 id_sps from dbo.tb_sps where Org=tb_org1.s_FullName);
Ошибку выдает:
Incorrect syntax near the keyword 'as'.

Re: Update...

Naeel Maqsudov » 21 май 2009, 13:06

Поможет коррелированный UPDATE. Т.е. выражение SET должно содержать коррелированный подзапрос

update dbo.tb_org as tb_org1
set is_sps = (select id_sps from dbo.tb_sps where Org=tb_org1.s_FullName);

При этом надо гарантировать уникальность значений в поле Org, иначе запрос прорвёт где-то на середине.
Если вдруг дубликаты есть, то их можно исключить используя агрегирование или директиву TOP N (Если я не ошибаюсь, у MSSQL она должна поддерживаться)

т.е. например:

update dbo.tb_org as tb_org1
set is_sps = (select min(id_sps) from dbo.tb_sps where Org=tb_org1.s_FullName);

или

update dbo.tb_org as tb_org1
set is_sps = (select top 1 id_sps from dbo.tb_sps where Org=tb_org1.s_FullName);

Update...

Ashok » 21 май 2009, 12:39

Есть две таблицы:
1) dbo.tb_org
id_org s_FullName id_sps
1 АвтоОбуффь, торгово-сервисный центр NULL
2 Вершина, ИП Василенко Ю.Б. NULL
3 Гагарин-Шина, торгово-сервисный центр NULL
...n

2) dbo.tb_sps
id_sps s_Name Org
1 Фантазия ООО "Рога и Копыта"
2 Нет фантазии ЗАО "Хвосты и Копыта"
3 Почти дибил МУП "12"
...n

Необходимо обновить столбец id_sps таблицы dbo.tb_org согласно условию - если значение в столбце Org таблицы dbo.tb_sps равно значению столбца s_FullName таблицы dbo.tb_org возьми значение столбца id_sps таблицы dbo.tb_sps и произведи update столбца id_sps таблицы dbo.tb_org

Прошу помочь написать это на понятном сиквелю 2000 языке.

Вернуться к началу