[ОТВЕТИТЬ]
Опции темы
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=&Траляля
 
"Спасибо" Mtirt от:
12.03.2015 11:01  
vdm
Как уже не раз сказали - посмотри svgoodswithoper.

В твоем:
- так объединять smgoods и smopergoods нельзя - в smopergoods количество разбито по кассам, их по складу свернуть нужно прежде чем с smgoods складывать
- cast неясно зачем, лишнее
- returnquantity должно быть с плюсом
 
"Спасибо" vdm от:
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(....))
 
"Спасибо" svtl от:
12.03.2015 12:17  
BotMan
Цитата:
Сообщение от vdm
- так объединять smgoods и smopergoods нельзя - в smopergoods количество разбито по кассам, их по складу свернуть нужно прежде чем с smgoods складывать
так я же вроде складываю их в кучу, sum() предварительно, а потом вычитаю из smgoods?
 
 


Опции темы



Часовой пояс GMT +3, время: 13:36.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.