2015-06-22 5 views
3

Работает ли sqldependency с оператором IN? Моих команды:IN Оператор с SqlDependency не работает

SELECT n.PublishedAt 
FROM dbo.Navigations n 
WHERE NavigationGroupId IN (SELECT ng.Id FROM dbo.NavigationGroups ng 
          WHERE ng.SiteId = 1 
           AND ng.IsActive = 1 
           AND ng.[Type]= 'Secondary') 
    AND n.IsActive = 1 

Я имел взгляд на MSDN Dodumentation, но ничего не упоминается о операторе IN.

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

+2

«Утверждение не должно содержать подзапросов, внешних соединений или самосоединений». Hm, IN обычно отображает полусоединение. Вероятно, не поддерживается. Можете ли вы выразить IN как внутреннее соединение? – usr

+0

@usr - вы прибивали его более прямо - ['IN()'] (https://msdn.microsoft.com/en-GB/library/ms177682.aspx) определяется как подзапрос или последовательность выражения - тот, который находится в подзапросе вопроса sa. И ваша цитата охватывает все остальное. –

+0

@usr, я думаю, вы должны преобразовать свой комментарий в ответ, чтобы его можно было поддержать. В какой-то момент кто-то еще столкнется с этой проблемой. –

ответ

3

Из документации:

"Заявление не должно содержать подзапросов, внешние соединения, или само-соединения."

IN Обычно это карты для полусоединения. Damien_The_Unbeliever отмечает, что:

IN() определяется как подзапрос или последовательность выражений - тот, который в вопросе OPs является подзапросом.

Поэтому он, вероятно, не поддерживается.

Можете ли вы выразить IN как внутреннее соединение? Это сохраняет семантику, если запрос IN производит не более одной строки для каждой внешней строки. Если будет больше, то строки будут дублированы. Однако это не имеет значения для уведомления. Он должен срабатывать при одинаковых обстоятельствах.

+1

thx, решена с использованием внутреннего соединения – Rana

 Смежные вопросы

  • Нет связанных вопросов^_^