|
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) ты удивишься, но нет. :-)
старая хохма...
|
|