|
v7: помогите с прямым запросом | ☑ | ||
|---|---|---|---|---|
|
0
ks-78
09.09.12
✎
20:50
|
Написал запрос:
|select | $Спр.Договор [Дог $Справочник.Договоры], | sum(Проводки.sum_) [Сум] |from | $Справочник.ДоговорыОПС as Спр (nolock) | LEFT JOIN _1sentry as Проводки (nolock) ON Проводки.dtsc1 = $Спр.Договор | LEFT JOIN _1SACCS as Deb (nolock) ON Deb.ID = Проводки.ACCDTID |where | $ПоследнееЗначение.ДоговорыОПС.СостояниеДоговора(Спр.ID,:Дат) = :Сост1 |and | Проводки.date_time_docid between :НачДата and :КонДата |and | (Deb.SCHKOD = 'Н01.02.01. ' OR | Deb.SCHKOD = 'Н01.02.02. ' OR | Deb.SCHKOD = 'Н01.02.03. ' OR | Deb.SCHKOD = 'Н01.02.04. ' ) |AND | (Проводки.dtsc1 IS NULL) |group by | $Спр.Договор"; Задача - получить договоры, по которым нет проводок. Запрос пустой. Подскажите плиз, что не так делаю. |
|||
|
1
А л
10.09.12
✎
00:54
|
упрощай, смотри отладку в QA
пытаясь найти исключение в пересечении множеств, ты получил логическое противоречие между этой частью: | Проводки.date_time_docid between :НачДата and :КонДата и этой | (Проводки.dtsc1 IS NULL) |
|||
|
2
ADirks
10.09.12
✎
08:41
|
лучше так напиши:
select $Спр.Договор [Дог $Справочник.Договоры] from $Справочник.ДоговорыОПС as Спр (nolock) where $ПоследнееЗначение.ДоговорыОПС.СостояниеДоговора(Спр.ID,:Дат) = :Сост1 AND $Спр.Договор Not IN ( SELECT Проводки.dtsc1 FROM _1sentry as Проводки (nolock) .... WHERE .... ) будет понятнее. Да, и sum(Проводки.sum_) в селекте выглядит по меньшей мере странно, учитывая поставленную задачу. |
|||
|
3
olegves
10.09.12
✎
10:20
|
попробуй
IsNull(Проводки.date_time_docid,:НачДата) between :НачДата and :КонДата |
|||
|
4
ks-78
18.09.12
✎
22:59
|
Спасибо за помощь.
Использовал вариант 2 |
|||
|
5
1Сергей
19.09.12
✎
06:56
|
(3) date_time_docid? Ничего не попутал?
|
|||
|
6
Mikeware
19.09.12
✎
07:34
|
(5) ты удивишься, но нет. :-)
старая хохма... |
| Форум | Правила | Описание | Секции | Поиск |