SQL запрос (лимиты)
Модераторы: m0p3e, edward_K, Модераторы
SQL запрос (лимиты)
Подскажите, пожалуйста, в чем ошибка в данном запросе:
select spstep.kol,spsopr.kolfact,katsopr.nsopr
from
spsopr,spstep
where
(( 281474977708292==STEPDOC.CBASEDOC AND
281474979367529==dopbdoc.ckatsopr
and STEPDOC.NREC==SPSTEP.CSTEPDOC AND
SPSTEP.NREC==SPSOPR.CSPSTEP
and spsopr.csopr==katsopr.nrec
and dopbdoc.cbasedoc==basedoc.nrec
and spsopr.cmcusl==dopbdoc.cmc
));
Вроде ограничиваю катсопр (281474979367529==dopbdoc.ckatsopr), а выводится много лишнего вместо одной требующейся накладной:(
select spstep.kol,spsopr.kolfact,katsopr.nsopr
from
spsopr,spstep
where
(( 281474977708292==STEPDOC.CBASEDOC AND
281474979367529==dopbdoc.ckatsopr
and STEPDOC.NREC==SPSTEP.CSTEPDOC AND
SPSTEP.NREC==SPSOPR.CSPSTEP
and spsopr.csopr==katsopr.nrec
and dopbdoc.cbasedoc==basedoc.nrec
and spsopr.cmcusl==dopbdoc.cmc
));
Вроде ограничиваю катсопр (281474979367529==dopbdoc.ckatsopr), а выводится много лишнего вместо одной требующейся накладной:(
-
- Местный житель
- Сообщения: 370
- Зарегистрирован: 28 сен 2006, 15:43
- Откуда: Санкт-Петербург
- Контактная информация:
Re: SQL запрос (лимиты)
Весьма и весьма странный запрос для вывода одной накладной, нрек которой известен, к тому же. Слишком много лишнего, да и связки нелогичные какие-то.
where
((
<nrec> == KatSopr.Nrec and
KatSopr.Nrec == SpSopr.cSopr and
SpSopr.cSpStep == SpStep.Nrec // тут не уверен , так как не оч понял, что вы хотите , возможно, надо наоборот SpSopr.Nrec == SpStep.cSpSopr
....
))
where
((
<nrec> == KatSopr.Nrec and
KatSopr.Nrec == SpSopr.cSopr and
SpSopr.cSpStep == SpStep.Nrec // тут не уверен , так как не оч понял, что вы хотите , возможно, надо наоборот SpSopr.Nrec == SpStep.cSpSopr
....
))
Re: SQL запрос (лимиты)
Есть накладная на отпуск в производство, и есть ЛЗК. И может так быть, что количества по лимиту не хватает для отпуска, и для этого нужно учесть дополнительное количество из таблицы dopbdoc, поэтому и пыталась собрать такой запрос... Наверное поулчилось плохо:) Т.е. если есть возможность добрать из лимиток, то требование-накладная должна будет печтаться, иначе нет , потому что превышается лимит....
Re: SQL запрос (лимиты)
Стандартный механизм сверхлимитного отпуска не устраивает, что ли? С настройкой MANUF.LIMIT.
Кстати, таблицу dopbdoc надо бы, наверно, в секции from указать...
Кстати, таблицу dopbdoc надо бы, наверно, в секции from указать...
Re: SQL запрос (лимиты)
неясно что за зверь dopbdoc в 810 его нет
ну а так если бы он был
select spstep.kol,spsopr.kolfact,katsopr.nsopr, dopbdoc.*
from
spsopr,spstep
where
((
281474979367529==katsopr.nrec and
katsopr.nrec==dopbdoc.ckatsopr and
katsopr.nrec==spsopr.csopr and
katsopr.CSTEPDOC==STEPDOC.NREC and
SPSOPR.CSPSTEP==SPSTEP.NREC and
and spsopr.cmcusl==dopbdoc.cmc(noindex?)
));
ну а так если бы он был
select spstep.kol,spsopr.kolfact,katsopr.nsopr, dopbdoc.*
from
spsopr,spstep
where
((
281474979367529==katsopr.nrec and
katsopr.nrec==dopbdoc.ckatsopr and
katsopr.nrec==spsopr.csopr and
katsopr.CSTEPDOC==STEPDOC.NREC and
SPSOPR.CSPSTEP==SPSTEP.NREC and
and spsopr.cmcusl==dopbdoc.cmc(noindex?)
));
Re: SQL запрос (лимиты)
oiko - спасибо!
RAJAN - я не нашла такой настройки... ее надо добавить ?
RAJAN - я не нашла такой настройки... ее надо добавить ?
Re: SQL запрос (лимиты)
"Настройки Галактики \ Производство и планирование \ Управление производственной логистикой \ Отпуск в производство при превышении лимита"Marisha_P писал(а):я не нашла такой настройки...
Re: SQL запрос (лимиты)
Опять вернулись к лимитам:) Подскажите, люди добрые, что не так..Есть запрос
Запрос необходим для того, чтоб определить какое количество МЦ уже выбрано из имеющегося лимита.. В печатной форме вывожу
и у меня в этот цикл не заходит:( не понимаю, что делаю не так..
Код: Выделить всё
.create view Limit
select * from basedoc,katsopr,stepdoc,spstep,katmc,spsopr
where
((comp(BaseDocNRec)==stepdoc.cbasedoc
and stepdoc.nrec/== katsopr.cstepdoc
and STEPDOC.CBASEDOC ==BASEDOC.NREC
and SpSopr.cSpStep == SpStep.nRec
and String(NOMENKL)==katmc.barkod
and katsopr.nrec/==spsopr.csopr
and katmc.nrec /==spsopr.cmcusl
));
Код: Выделить всё
Summa_nakl:=0;
if (Limit.GetFirst stepdoc = 0) then
do {
if (Limit.GetFirst katsopr = 0) then
do {
if (Limit.GetFirst basedoc = 0) then
do {
if (Limit.GetFirst spstep = 0) then
do {
if (Limit.GetFirst katmc = 0) then
do {
if (Limit.GetFirst spsopr = 0) then
do {summa_nakl:=summa_nakl+Limit.spsopr.kolfact
Message (Limit.spsopr.kolfact);
}while ((Limit.getnext spsopr)=0)
} while ((Limit.getnext katmc)=0)
} while ((Limit.getnext spstep)=0)
} while ((Limit.getnext basedoc)=0)
} while ((Limit.getnext katsopr)=0)
} while ((Limit.getnext stepdoc)=0);
Re: SQL запрос (лимиты)
Marisha_P
1) как-то слишком просто;
2) SpSopr.cSpStep часто 0 бывает;
3) у вас разве замены не используются?
1) как-то слишком просто;
2) SpSopr.cSpStep часто 0 бывает;
3) у вас разве замены не используются?
Re: SQL запрос (лимиты)
Лучше использовать 2 вьюхи, одну для вычисления что отпущено по позициям ДО (stepdoc.nrec==SpStep.cstepdoc and SpStep.nRec==SpSopr.cSpStep)
и что отпустили мимо (stepdoc.nrec==katsopr.cstepdoc and katsopr.nrec==spsopr.ckatsopr and 0==SpSopr.cSpStep)
Зачем еще ограничение по katmc?
и что отпустили мимо (stepdoc.nrec==katsopr.cstepdoc and katsopr.nrec==spsopr.ckatsopr and 0==SpSopr.cSpStep)
Зачем еще ограничение по katmc?
Re: SQL запрос (лимиты)
Или одну
stepdoc.nrec==katsopr.cstepdoc and katsopr.nrec==spsopr.ckatsopr and SpSopr.cSpStep==SpStep.nrec and stepdoc.nrec==SpStep.cstepdoc(noindex)
проверять spstep на валидность
stepdoc.nrec==katsopr.cstepdoc and katsopr.nrec==spsopr.ckatsopr and SpSopr.cSpStep==SpStep.nrec and stepdoc.nrec==SpStep.cstepdoc(noindex)
проверять spstep на валидность
Re: SQL запрос (лимиты)
Мне по позиции в накладной на отпуск надо посмотреть - сколько МЦ было в привязанной ЛЗК, и сколько МЦ уже было забрано накладными, привязанными к документу...