Фильтры
Разработка

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

Добрый день.

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 комментариев

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

Вы имеете в виду что запрос который вы написали
[sql]
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)
[/sql]
работает ?

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

получил такой код
[sql]
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]
результаты выполнения аналогичны результатам вашего 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-й линии поддержки

Спасибо за помощь, проблему решил. Был неправильно составлен запрос.
Нужно было:
[sql]
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
[/sql]

Показать все комментарии