Проблема с запросом

Добрый день.

SELECT * FROM dbo.tbl_opportunity dto
WHERE EXISTS (
SELECT * FROM dbo.tbl_task dtt
WHERE dtt.statusid > '{FB10FCB1-DE0E-446D-81E8-A0C456E2C3AB}'
AND dtt.opportunityid = dto.id)

есть такой запрос на sqlserver

Мне нужно сделать фильтр, который будет выполнять проверку данных условий.

comparefilte: tbl.task_statusid > парамерт(статус задачи открыра)
comparefilte2: dtt.opportunityid = dto.id
бул фильтр: указана группа задачи и булейский параметр = 1

Но не срабатывает фильтр, запрос отдельно работает на ура

Нравится

8 комментариев

Здравствуйте Олег,

Вы имеете в виду что запрос который вы написали

SELECT * FROM dbo.tbl_opportunity dto
WHERE EXISTS (
SELECT * FROM dbo.tbl_task dtt
WHERE dtt.statusid <> '{FB10FCB1-DE0E-446D-81E8-A0C456E2C3AB}'
AND dtt.opportunityid = dto.id)

работает ?

Посмотрите пожалуйста Предпросмотр и код который генерирует Terrasoft администратор.
Я создал такой SelectQuery :

получил такой код

SELECT
	[tbl_Opportunity].[ID] AS [ID]
FROM
	[dbo].[tbl_Opportunity] AS [tbl_Opportunity]
WHERE(EXISTS 
	(SELECT
		[tbl_Task].[OpportunityID] AS [OpportunityID]
	FROM
		[dbo].[tbl_Task] AS [tbl_Task]
	WHERE([tbl_Task].[StatusID] <> :statusid AND
		[tbl_Opportunity].[ID] = [tbl_Task].[OpportunityID])))

результаты выполнения аналогичны результатам вашего sql запроса, который написан в ручную.

Если данный пост не помог, прикрепите пожалуйста xml вашего сервиса sq

Выполняю таким же образом, но фильтр на срабатывает.
Прилагаю xml

Олег, пожалуйста перезалейте файл.
При открытии получаю следующую ошибку:
! C:\Documents and Settings\a.yavorskiy\Desktop\sq_opportunity.rar: CRC failed in sq_Opportunity.xml. The file is corrupt
! C:\Documents and Settings\a.yavorskiy\Desktop\sq_opportunity.rar: Unexpected end of archive

На сколько я понял в данном sq вы не используете свои таблицы, следовательно мы сможем увидеть описанную вами проблему. Попробуйте включить фильтры (установив галочки), и проверить их работу в принципе в вашем запросе.

Прикладываю файл повторно.
Почему то отрабатывает не верно. Проекты с открытыми задачами я вижу, хотя в условии указал, что показывать данные проекты не нужно.

Олег после того как подгрузил сервисы на 3.0.4.112
Заметил в фильтре сравнения

Насколько я понимаю следует использовать "<>" после чего установил фильтры

Получил код :

...
WHERE
	([tbl_Opportunity].[StatusID] = :OpportunityStatus_AtWork AND
	EXISTS 
	(SELECT
		[tbl_Opportunity].[ID] AS [ID]
	FROM
		[tbl_Opportunity] AS [tbl_Opportunity]
	WHERE
		(EXISTS 
		(SELECT
			[tbl_Task].[OpportunityID] AS [OpportunityID]
		FROM
			[tbl_Task] AS [tbl_Task]
		WHERE
			(([tbl_Task].[StatusID] <> :StatusIDOpen AND
			[tbl_Opportunity].[ID] = [tbl_Task].[OpportunityID]))))))
...

На сколько я понимаю этот код аналочен желаемому
Проверьте пожалуйста.

Да, я заметил данную ошибку, но после исправления, мне все равно показывает все проекты с задачами в состоянии "открыта". Если смотреть запрос на просмотр, то выглядит все верно, но в работе отрабатывает совершенно не так как должен.

Приведите пожалуйста код который генерирует Terrasoft Администратор в режиме предпросмотра.

Яворский Алексей
Эксперт 3-й линии поддержки

Спасибо за помощь, проблему решил. Был неправильно составлен запрос.
Нужно было:

SELECT * FROM dbo.tbl_opportunity dto
WHERE NOT EXISTS (
SELECT * FROM dbo.tbl_task dtt
WHERE dtt.statusid = '{FB10FCB1-DE0E-446D-81E8-A0C456E2C3AB}'
AND dtt.opportunityid = dto.id
Показать все комментарии