|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
Добрый вечер. В БД (mdb) имеется таблица Регистр. В ней следующая структура: Дата | Магазин | ВидТовара | Операция | Колво со след данными: 25.03.2012 | Магелан | Хлеб | Приход | 40 25.03.2012 | Василек | Молоко | Приход | 100 26.03.2012 | Магелан | Хлеб | Расход | 25 27.03.2012 | Василек | Молоко | Расход | 50 28.03.2012 | Магелан | Хлеб | Приход | 10 ... и т.д. Для расчета остатков необходимо сумму прихода - сумма расхода по каждому магазину и каждому виду товара. С помощью Excel делаю запрос к БД mdb. Код: vbnet 1. 2.
Вопрос: возможно ли это все сделать одним запросом т.е. в одном запросе найти сумму прихода и отнять сумму расхода и выдать результат типа : Магелан Хлеб 25 Василек Молоко 50 Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2012, 21:20 |
|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2012, 21:30 |
|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
и что это получится. Опять же просуммируются только приходы. А необходимо от суммы прихода вычесть сумму расхода по каждому магазину и виду товара. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2012, 22:05 |
|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
Deys85Опять же просуммируются только приходы.с чего? проанализируйте запрос или просто попробуйте ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2012, 23:02 |
|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
Всем спасибо. Вопрос решен. Решение: Код: vbnet 1. 2. 3. 4. 5.
результат одно значение остатка для магазина по типу товара. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2012, 23:05 |
|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
Так тоже можно, но для больших таблиц вариант Akina будет работать все же быстрее ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2012, 23:30 |
|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
Deys85, Еще можно изменить логику, и в таблице поле со значением (Колво) хранить уже с нужным знаком в зависимости от (Операция), т.е. расходы хранятся со знаком минус, а отображаются - по абсолютной величине... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2012, 01:00 |
|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
AndreTM, ну не согласен, это упростит только данную выборку, а для всех остальных будет только голову морочить программисту ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2012, 08:34 |
|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
Shocker.ProAndreTM, ну не согласен, это упростит только данную выборку, а для всех остальных будет только голову морочить программисту а мне кажется наоборот, во многих системах видел такую реализацию, начиная от банковских и кончая ERP ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2012, 09:11 |
|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
AndreTMЕще можно изменить логику, и в таблице поле со значением (Колво) хранить уже с нужным знаком в зависимости от (Операция), т.е. расходы хранятся со знаком минус, а отображаются - по абсолютной величине... Shocker.Proне согласен, это упростит только данную выборку, а для всех остальных будет только голову морочить программисту Если Приход/Расход - это исчерпывающий список операций, то хранение суммы со знаком правильнее. А поле операции вообще не нужно, и может быть удалено. PS. если голова программиста путается в таких элементарных вещах - ему явно пора как минимум в отпуск... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2012, 10:53 |
|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
Я говорю все-таки про большие системы, а не наколенные. Ты видел где-нибудь в расходной накладной отрицательные суммы? А понятие дебет/кредит (в двух разных столбцах и с ПОЛОЖИТЕЛЬНЫМИ значениями) тебе знакомо? Спор поддерживать не буду, он ни к чему не приведет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2012, 11:03 |
|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
AkinaAndreTMЕще можно изменить логику, и в таблице поле со значением (Колво) хранить уже с нужным знаком в зависимости от (Операция), т.е. расходы хранятся со знаком минус, а отображаются - по абсолютной величине... Shocker.Proне согласен, это упростит только данную выборку, а для всех остальных будет только голову морочить программисту Если Приход/Расход - это исчерпывающий список операций, то хранение суммы со знаком правильнее. А поле операции вообще не нужно, и может быть удалено. PS. если голова программиста путается в таких элементарных вещах - ему явно пора как минимум в отпуск... не совсем. как мне видится, все операции над, к примеру, с товаром могут быть одни с плюсом, другие с минусом: приход "+" расход "-" возврат "+" перемещение "-" списане "-" и т.д так что поле "операция" всетаки нужно, т.к может быть необходимость видеть всю динамику движения, а не только остаток ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2012, 11:03 |
|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
Это в пример две операции. По факту таблица больше и имеет 5 операции, более 5 магазинов и видов товаров и + подвидов. Но таблица по подсчетам для данного участка за год накапливает около 60-65 тыс операций. т.е. впринципе по скорости не критично. Данный запрос выполняется на 50 тыс строк 1сек+-. Так что для данной задаче вполне. А в дальнейшем когда знаний наберусь в SQL перепишу алгоритмы. Знаки минус к продаже это мысль, надо обдумать не будут ли они на задумку влият :) Спасибо за совет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2012, 22:09 |
|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
Shocker.ProЯ говорю все-таки про большие системы, а не наколенные. Ты видел где-нибудь в расходной накладной отрицательные суммы? А понятие дебет/кредит (в двух разных столбцах и с ПОЛОЖИТЕЛЬНЫМИ значениями) тебе знакомо? Спор поддерживать не буду, он ни к чему не приведет. Не в порядке спора, просто прояснение моей позиции. Мы говорим именно о наколенке. Дебет/кредит - это немного из другой оперы. Склад - не совсем булгахтерия. Операций больше чем две? ну пусть остаётся, мне поля не жалко. Но это к слову... Есть принципиально два подхода. Ты - адепт первого. Суммы положительные, а знак определяется операцией. Я в данном случае адепт второго - суммы со знаком. Следствие твоего подхода - дополнительные вычисления при вычислениях. Следствие моего подхода - дополнительные вычисления при формировании вывода. Я убеждён, что ускорение вычислений гораздо важнее ускорения взаимодействия с пользователем. Потому в наколенной системе хранение сумм со знаком - оправдано. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2012, 23:18 |
|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
Shocker.Pro , ну, не надо так рьяно-то Я специально и оговорился, про разницу между формой хранения и формой отображения. Тем более, что "ВидОперации" хранить надо тоже, это несомненно. Вот только ввод данных всё равно требует преобразований для занесения в базу, поэтому удобнее приписывать знак именно на этом этапе. А вывод информации - это отчет (ваше упоминание про оборотную ведомость - как раз в строку), и при формировании его подставить/убрать знак тоже не проблема. При этом быстродействие обычно требуется не для ввода (особенно интерактивного) и не для вывода (вы же выходные формы формируете не ежесекундно), а именно для бизнес-логики и внутренних выборок. И здесь отказ от анализа дополнительных полей вполне может вести к увеличению быстродействия на порядок... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2012, 23:27 |
|
SQL запрос на вычисление остатков
|
|||
---|---|---|---|
#18+
был в плохом настроении ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2012, 00:30 |
|
|
start [/forum/topic.php?fid=61&msg=37958636&tid=2175396]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 138ms |
0 / 0 |