Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2013, 17:11   #1
Solyanik
Новичок
Джуниор
 
Регистрация: 12.02.2013
Сообщений: 3
По умолчанию Запрос UPDATE

Добрый день! Подскажите, пожалуйста, есть запрос на выборку:

Код:
SELECT
	[tbl_Contact].[Name] AS [Name],
	[tbl_Contact].[OwnerID] AS [OwnerID_Contact],
	[tbl_Contract].[ContractNumber] AS [ContractNumber],
	[tbl_Contract].[OwnerID] AS [OwnerID_Contract],
	[tbl_Contract].[ContractTypeID] AS [ContractTypeID],
	[tbl_Contract].[CreatedOn] AS [CreatedOn]
FROM
	[dbo].[tbl_Contact] AS [tbl_Contact]
INNER JOIN
	[dbo].[tbl_Contract] AS [tbl_Contract] ON [tbl_Contract].[ContactID] = [tbl_Contact].[ID]
WHERE(([tbl_Contract].[OwnerID] = :NAME_ALEKSEEVA OR
	[tbl_Contract].[OwnerID] = :NAME_EVSIKOV OR
	[tbl_Contract].[OwnerID] = :NAME_LUTOVA OR
	[tbl_Contract].[OwnerID] = :NAME_PETRENKO OR
	[tbl_Contract].[OwnerID] = :NAME_SOLOMATKINA OR
	[tbl_Contract].[OwnerID] = :NAME_TEMKIN OR
	[tbl_Contract].[OwnerID] = :NAME_ANDREEVA OR
	[tbl_Contract].[OwnerID] = :NAME_SHUVALOVA OR
	[tbl_Contract].[OwnerID] = :NAME_POLYAKOVA OR
	[tbl_Contract].[OwnerID] = :NAME_ANDREEVA2 OR
	[tbl_Contract].[OwnerID] = :NAME_ROHMANENKO) AND
	[tbl_Contact].[OwnerID] IS NULL)
Мне надо сделать запрос UPDATE, чтобы поле [tbl_Contact].[OwnerID] обновилось значением [tbl_Contract].[OwnerID].

Т.е. селектом я нахожу тех клиентов (tbl_contact), у которых OwnerID = NULL и присвоить им OwnerID с таблицы tbl_Contract - я не понимаю как их связать.

Рабочая среда ТерраСофт, но мне хотябы понять логику.

Заранее спасибо!

Последний раз редактировалось Solyanik; 12.02.2013 в 17:24.
Solyanik вне форума Ответить с цитированием
Старый 12.02.2013, 20:04   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Можно так, но при условии, что каждой записи tbl_Contact соответствует не более одной записи tbl_Contract. В противном случае вложенный запрос нужно переделать
Код:
UPDATE tbl_Contact
  SET OwnerID=(SELECT tbl_Contract.OwnerID FROM tbl_Contract WHERE tbl_Contract.ContactID=tbl_Contact.ID)
  WHERE tbl_Contact.OwnerID IS NULL
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.02.2013, 20:42   #3
Solyanik
Новичок
Джуниор
 
Регистрация: 12.02.2013
Сообщений: 3
По умолчанию

Да в том-то и дело что там ~9К записей, и каждой записи tbl_Contact соответствует 100-200 записей tbl_Contract.

Может намекнете что-как переделать?

Спасибо!
Solyanik вне форума Ответить с цитированием
Старый 12.02.2013, 21:20   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Скажем так - во вложенном запросе нужно выбрать единственное значение. Как? Вам виднее.
Варианты - max(tbl_Contract.OwnerID), min(tbl_Contract.OwnerID), TOP 1 с каким-то ORDER BY, дополнительные ограничения во WHERE и т.д. Это вы должны решить что вам нужно

С TOP 1 пожалуй погорячился, это для MS SQL, для других СУБД есть аналоги типа LIMIT, FIRST и др.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 12.02.2013 в 21:25.
Аватар вне форума Ответить с цитированием
Старый 12.02.2013, 22:15   #5
Solyanik
Новичок
Джуниор
 
Регистрация: 12.02.2013
Сообщений: 3
По умолчанию

Ну, впринципе, немного на свои места встало. Спасибо!
Solyanik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос update Ditrovich SQL, базы данных 3 19.10.2012 13:42
SQL запрос UPDATE averkiev Visual C++ 0 26.07.2012 16:26
Запрос с update zolomar Microsoft Office Access 3 25.01.2011 22:40
Переменная и запрос Update Виталий Желтяков PHP 2 21.06.2010 07:12
запрос update из C# Maxim90 Помощь студентам 0 09.04.2010 20:06