04.04.2006, 01:44 | #1 |
Участник
|
Подскажите как реализовать такой запрос в Axapte
Подскажите как реализовать такой запрос в Axapte
select InventDim.inventDimId, InventSum.ItemId, InventDim.inventSerialId, InventSerial.AdvertAction, SUM(InventSum.PostedQty)PostedQty, SUM(InventSum.PostedValue)PostedValue FROM InventSum JOIN InventDim on InventDim.inventDimId = InventSum.InventDimId JOIN InventSerial on InventSerial.InventSerialId = InventDim.inventSerialId JOIN InventTable on InventSum.ItemId = InventTable.ItemId where InventDim.inventSerialId<>'' GROUP BY InventDim.inventDimId,InventSum.ItemId, InventDim.inventSerialId , InventSerial.AdvertAction order by InventSum.ItemId |
|
04.04.2006, 08:59 | #2 |
NavAx
|
Не совсем понятно, зачем здесь упомянута таблица InventTable...
|
|
04.04.2006, 13:35 | #3 |
Участник
|
ну можно и без этой таблицы
select InventDim.inventDimId, InventSum.ItemId, InventDim.inventSerialId, InventSerial.AdvertAction, SUM(InventSum.PostedQty)PostedQty, SUM(InventSum.PostedValue)PostedValue FROM InventSum JOIN InventDim on InventDim.inventDimId = InventSum.InventDimId JOIN InventSerial on InventSerial.InventSerialId = InventDim.inventSerialId where InventDim.inventSerialId<>'' GROUP BY InventDim.inventDimId,InventSum.ItemId, InventDim.inventSerialId , InventSerial.AdvertAction order by InventSum.ItemId |
|
04.04.2006, 13:49 | #4 |
Программатор
|
А group by и order by по полям на одной таблице помоему нельзя...
|
|
04.04.2006, 14:03 | #5 |
Участник
|
Да OREDER BY модно опустить... сама логика нужна
|
|
04.04.2006, 14:07 | #6 |
NavAx
|
Обязательно должна быть еще связка InventSerial.itemId = InventSum.itemId;
|
|
04.04.2006, 14:07 | #7 |
Участник
|
select sum(PostedQty), sum(PostedValue) from inventSum group by itemId, inventDimId
join InventDim where InventDim.inventDimId == inventSum.InventDimId join InventSerial where InventSerial.InventSerialId == InventDim.inventSerialId && InventSerial.InventSerialId != ''; что вроде этого |
|
04.04.2006, 14:18 | #8 |
Программатор
|
select ItemId, sum(PostedQty), sum(PostedValue) from InventSum group by ItemId
join InventDimId,InventSerialId from InventDim where InventDim.inventSerialId != "" && InventDim.inventDimId = InventSum.InventDimId group by inventDimId,inventSerialId join InventSerial where InventSerial.InventSerialId = InventDim.inventSerialIdgroup by AdvertAction Помоему так (отпишись потом верно нет ) |
|
04.04.2006, 14:29 | #9 |
Участник
|
2Sada
зачем select itemid если есть group by itemid? itemid и так будет доступен. разве нет? |
|
04.04.2006, 14:35 | #10 |
Программатор
|
2 latvik для верности и понятливости...(чтоб ближе к вопросу было)
|
|
04.04.2006, 14:57 | #11 |
NavAx
|
Я все-таки настаиваю на обязательности связки InventSerial.itemId = InventSum.itemId по той причине, что в таблице InventSerial уникальность поддерживается совокупностью полей ItemId и inventSerialId, и предлагаю свой вариант решения:
PHP код:
А вот что выдал трассировщик SQL по этому вопросу: Код: SELECT SUM(A.POSTEDQTY),SUM(A.POSTEDVALUE),A.ITEMID,B.INVENTDIMID,B.INVENTSERIALID,C.PRODDATE FROM INVENTSUM A,INVENTDIM B,INVENTSERIAL C WHERE (A.DATAAREAID='zkr') AND ((B.DATAAREAID='zkr') AND ( NOT ((B.INVENTSERIALID=' ')) AND (A.INVENTDIMID=B.INVENTDIMID))) AND ((C.DATAAREAID='zkr') AND ((C.ITEMID=A.ITEMID) AND (B.INVENTSERIALID=C.INVENTSERIALID))) GROUP BY A.ITEMID,B.INVENTDIMID,B.INVENTSERIALID,C.PRODDATE ORDER BY A.ITEMID,B.INVENTDIMID,B.INVENTSERIALID,C.PRODDATE OPTION(FAST 16) |
|
04.04.2006, 15:06 | #12 |
Программатор
|
to Roman777
Согласен с необходимостью InventSerial.itemId = InventSum.itemId, но как это реализовать - это уже дело каждого Главное сам принцип...(синтаксис и все такое(помоему это интересовало автороа темы(хотя я могу и ошибаться(пардон за вложенность...)))...) |
|
04.04.2006, 21:55 | #13 |
Участник
|
Круто получилось....
Спасибо... сейчас попробую.... |
|