11.03.2015 15:39
BotMan
 
Подскажите, оперативный остаток в СМ рассчитывается (quantity-salequantity) или он хранится сразу в таблице??
дело в том, что если тяну из таблицы SMopergoods артикул который не продавался - то тогда ничего не отображается.
11.03.2015 15:59
Mtirt
 
smgoods.quantity - SMopergoods.salequantity

Можешь выбрать из вьюхи svgoodswithoper.
Или посмотреть её описание...
11.03.2015 16:12
BotMan
 
делаю такой запрос и если артикул продавался, тогда результат есть, если не продавался - результата нету вообще. понимаю, что артикул не попал в SMopergoods. подскажите плз как отобрать остаток, даже если не продавался сегодня артикул ?


Код:
select crd.name, goo.article, cast((goo.quantity-op.salequantity) as float) as operquant  from smgoods goo, smopergoods op, smcard crd
where crd.article = 1040282
and goo.article=op.article
and crd.article = op.article
and crd.article = goo.article
11.03.2015 17:00
Павел Сосновских
 
inner join/left join
или в таком написании "+" надо добавить
12.03.2015 10:06
BotMan
 
Код:
select crd.name, crd.article, cast((goo.quantity-nvl(sum(op.salequantity),0)+nvl(sum(-op.returnquantity),0)) as float) as quantity
 from supermag.smcard crd, supermag.smgoods goo, supermag.smopergoods op
 where crd.article = &Траляля
 and crd.article=op.article(+)
 and crd.article=goo.article 
  group by crd.name, crd.article, quantity
получился вот такой запрос, отображает ОперОстатки. Может кто найдет ошибку какую или подскажет как его оптимизировать можно ?
12.03.2015 10:47
Mtirt
 
А чем не нравится
Код:
select * from svgoodswithoper where article=&Траляля
12.03.2015 11:01
vdm
 
Как уже не раз сказали - посмотри svgoodswithoper.

В твоем:
- так объединять smgoods и smopergoods нельзя - в smopergoods количество разбито по кассам, их по складу свернуть нужно прежде чем с smgoods складывать
- cast неясно зачем, лишнее
- returnquantity должно быть с плюсом
12.03.2015 11:07
BotMan
 
первым делом поискал в своей документации "Том09 v.1.026. Структура БД ТС СМ-2000" - svgoodswithoper, но там пусто.
cast - мне тип в float нужен.
буду пробовать svgoodswithoper!
12.03.2015 11:23
svtl
 
svgoodswithoper - это вью, ее описание - в самой БД - т.е. просто чем-то открыть и посмотреть структуру. а уже описания таблиц, в нее входящих - смотрим в документе Структура БД. (в СМ+ вьюшки все (или почти все) начинаются с SV).
Далее, если получаете связку двух таблиц по left или rigth join (т.е., как в вашем случае, в одной из таблиц значений кол-ва для артикула может не быть), то значение поля из такой таблицы выбираете с обработкой null-знаечния. Причем не как у вас - nvl(sum(...)), а наоборот - sum(nvl(....))
12.03.2015 12:17
BotMan
 
Цитата:
vdm - так объединять smgoods и smopergoods нельзя - в smopergoods количество разбито по кассам, их по складу свернуть нужно прежде чем с smgoods складывать
так я же вроде складываю их в кучу, sum() предварительно, а потом вычитаю из smgoods?
Часовой пояс GMT +3, время: 05:18.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.