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

Откуда:
Сообщений: 33
есть кусок кода
	--stat		
update ttc	
	set		ttc.ChangeDate = GETDATE()
			from	tTransactChanges as ttc
				join vTransactUsers as vtu on ttc.UserID = vtu.USER_LOGIN
	where	ttc.stat not in (select stat from vTransactUsers) and ttc.UserID = vtu.USER_LOGIN


это запрос, который, как я рассчитывал, ищет различия по столбцу "stat" и, если находит, ставить некий timestamp в столбец "ChangeDate". Я знаю точно, что как минимум, есть 1 такая запись.

вот так проверял наличие этой записи
------------------------------
select	tTransactChanges.UserID, 
		tTransactChanges.stat, 
		vTransactUsers.USER_LOGIN, 
		vTransactUsers.stat

from	tTransactChanges, 
		vTransactUsers

where	tTransactChanges.stat not in (select stat from vTransactUsers) 
		and tTransactChanges.UserID = vTransactUsers.USER_LOGIN
-------------------------------
-------------------------------
select * from tTransactChanges where UserID = 'superview188'
-------------------------------
-------------------------------
select a.USER_LOGIN, a.BRANCH_ID, a.GROUP_ID, a.stat from vTransactUsers a where a.USER_LOGIN = 'superview188'


я полагаю, что неправда в куске
where	ttc.stat not in (select stat from vTransactUsers) and ttc.UserID = vtu.USER_LOGIN
?

К сообщению приложен файл. Размер - 73Kb
25 апр 14, 16:03    [15936617]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в запросе  [new]
iap
Member

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

во-первых, у Вас скобка не там закрывается в WHERE
во-вторых, лучше никогда не применяйте NOT IN(). NOT EXISTS() надёжнее
в-третьих, наверно так?
WHERE NOT EXISTS(SELECT ttc.stat INTERSECT SELECT vtu.stat)
Надеюсь, что связи Вы правильно написали, чтобы 1:1 было...
25 апр 14, 16:08    [15936670]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в запросе  [new]
iap
Member

Откуда: Москва
Сообщений: 47083
iap
k_mak,

во-первых, у Вас скобка не там закрывается в WHERE
во-вторых, лучше никогда не применяйте NOT IN(). NOT EXISTS() надёжнее
в-третьих, наверно так?
WHERE NOT EXISTS(SELECT ttc.stat INTERSECT SELECT vtu.stat)

Надеюсь, что связи Вы правильно написали, чтобы 1:1 было...
Если я неправильно понял, то всё равно надо
NOT EXISTS(SELECT * FROM vTransactUsers t WHERE ttc.stat=t.stat AND ...)
25 апр 14, 16:11    [15936690]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в запросе  [new]
k_mak
Member

Откуда:
Сообщений: 33
iap,

огромное спасибо! теперь все проставляется!!!=)

WHERE NOT EXISTS(SELECT ttc.stat INTERSECT SELECT vtu.stat)

вот так все ок работает!
25 апр 14, 16:16    [15936733]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить