|
Как только SQL-запросами получить все списания партий
|
|||
---|---|---|---|
#18+
Вопрос по списанию партий по методу FIFO. Даны две таблицы : ТаблицаПриходов : Товар, Дата , Партия , Количество, Сумма ТаблицаРасходов : Товар, Дата , Документ, Количество Возможно ли используя ТОЛЬКО последовательность команд Select получить ТаблицуСписания : Товар, Партия, Документ , КоличествоСписания , СуммаСписания Интересует прежде всего принципиальный вопрос : Да или Нет ? Если такая реализация существует , то буду благодарен за Ссылку. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2009, 03:02 |
|
Как только SQL-запросами получить все списания партий
|
|||
---|---|---|---|
#18+
Hsig Возможно ли используя ТОЛЬКО последовательность команд Select получить ТаблицуСписания : Товар, Партия, Документ , КоличествоСписания , СуммаСписания Интересует прежде всего принципиальный вопрос : Да или Нет ? Лично у меня с ходу подобное не получилось - пришлось использовать более широкий аресенал средств SQL. Но это не значит, что подобное невозможно, просто в моем случае я не счел разумным так себя ограничивать в средствах. Теоретически скорее всего можно. Но диалект SQL должен обязательно поддерживать современные возможности SELECT: хотя бы подзапросы и SELECT FROM SELECT. А в идеале еще и WITH RECURSIVE наверное. Но запросы если и получатся, то будут весьма многоэтажные и неудобочитаемые IMHO. Встречный вопрос: а зачем понадобилось так себя ограничивать? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2009, 08:33 |
|
Как только SQL-запросами получить все списания партий
|
|||
---|---|---|---|
#18+
Александр Гoлдун, Если организовать цикл сканирования строк ТаблицыРасходов и для каждой строки запускать стандартную процедуру списания по ТаблицеПриходов, то проигрыш во времени будет огромным. (1) Задача списания партий известна давно и я предположил что-то кто-то подобную задачу уже решил таким более эффективным способом. Ограничение на использование только команд Select можно , конечно, снять и сформулировать задачу так : Существует процедура построения ТаблицыСписания МНОГОКРАТНО , в 10 и более раз , превышающая по скорости алгоритм в (1) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2009, 10:01 |
|
Как только SQL-запросами получить все списания партий
|
|||
---|---|---|---|
#18+
Другими словами , возможна ли реализация процедуры получения ТаблицыСписания без управляющей конструкции "Цикл" и содержащей лишь простую последовательность команд современного диалекта языка запросов SQL ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2009, 10:25 |
|
Как только SQL-запросами получить все списания партий
|
|||
---|---|---|---|
#18+
Hsig Если организовать цикл сканирования строк ТаблицыРасходов и для каждой строки запускать стандартную процедуру списания по ТаблицеПриходов, то проигрыш во времени будет огромным. (1) Проигрыш по сравнению с чем? Hsig Ограничение на использование только команд Select можно , конечно, снять и сформулировать задачу так : Существует процедура построения ТаблицыСписания МНОГОКРАТНО , в 10 и более раз , превышающая по скорости алгоритм в (1) ? Можно я отвечу вопросами на вопрос? А почему так критично быстродействие? В какой момент у вас это списание делается? Может пересмотреть идеологию? Речь идет о сиюминутном проведении конкретного документа или каком-то массовом перепроведении всего пакета документов за период? А может вы просто хотите на лету считать все это? Лучше выбросить эту идею сразу и отдельно генерировать и хранить движения партий. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2009, 11:50 |
|
Как только SQL-запросами получить все списания партий
|
|||
---|---|---|---|
#18+
Александр Гoлдун, Конечно, речь идет о "массовом перепроведении всего пакета документов за период". Имеются ввиду Расходные документы. При изменении и проведении документов задним числом , хранящися движения , полученные в реальном времени при проведении каждого конкретного документа, становятся неактуальными. Так вот, ставится задача быстрого правильного получения всех движений всех расходных документов. Если получать движения (ТаблицуСписания) "подокументно" в цикле перебора всех расходных документов, то получется очень медленно , т.к. нужно для каждого документа получать запросом текущие остатки по партиям на позицию проводимого документа. В этой же процедуре решается задача правильности округления СуммыСписания при закрытии партии. Проблема эта - старая. Возможно есть уже готовые решения для описанной в теме задачи ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2009, 13:12 |
|
|
start [/forum/topic.php?fid=33&msg=36187555&tid=1548478]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 150ms |
0 / 0 |