Гость
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Как только SQL-запросами получить все списания партий / 6 сообщений из 6, страница 1 из 1
10.09.2009, 03:02
    #36187555
Hsig
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как только SQL-запросами получить все списания партий
Вопрос по списанию партий по методу FIFO.

Даны две таблицы :
ТаблицаПриходов :
Товар, Дата , Партия , Количество, Сумма

ТаблицаРасходов :
Товар, Дата , Документ, Количество

Возможно ли используя ТОЛЬКО последовательность команд Select получить ТаблицуСписания :
Товар, Партия, Документ , КоличествоСписания , СуммаСписания

Интересует прежде всего принципиальный вопрос : Да или Нет ?
Если такая реализация существует , то буду благодарен за Ссылку.
...
Рейтинг: 0 / 0
10.09.2009, 08:33
    #36187667
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как только SQL-запросами получить все списания партий
Hsig
Возможно ли используя ТОЛЬКО последовательность команд Select получить ТаблицуСписания :
Товар, Партия, Документ , КоличествоСписания , СуммаСписания

Интересует прежде всего принципиальный вопрос : Да или Нет ?

Лично у меня с ходу подобное не получилось - пришлось использовать более широкий аресенал средств SQL. Но это не значит, что подобное невозможно, просто в моем случае я не счел разумным так себя ограничивать в средствах. Теоретически скорее всего можно. Но диалект SQL должен обязательно поддерживать современные возможности SELECT: хотя бы подзапросы и SELECT FROM SELECT. А в идеале еще и WITH RECURSIVE наверное. Но запросы если и получатся, то будут весьма многоэтажные и неудобочитаемые IMHO.

Встречный вопрос: а зачем понадобилось так себя ограничивать?
...
Рейтинг: 0 / 0
10.09.2009, 10:01
    #36187827
Hsig
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как только SQL-запросами получить все списания партий
Александр Гoлдун,

Если организовать цикл сканирования строк ТаблицыРасходов
и для каждой строки запускать стандартную процедуру списания по ТаблицеПриходов, то проигрыш во времени будет огромным. (1)

Задача списания партий известна давно и я предположил
что-то кто-то подобную задачу уже решил таким более эффективным способом.

Ограничение на использование только команд Select можно , конечно, снять
и сформулировать задачу так :
Существует процедура построения ТаблицыСписания МНОГОКРАТНО , в 10 и более раз , превышающая по скорости алгоритм в (1) ?
...
Рейтинг: 0 / 0
10.09.2009, 10:25
    #36187890
Hsig
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как только SQL-запросами получить все списания партий
Другими словами , возможна ли реализация процедуры получения ТаблицыСписания
без управляющей конструкции "Цикл" и содержащей лишь простую последовательность
команд современного диалекта языка запросов SQL ?
...
Рейтинг: 0 / 0
10.09.2009, 11:50
    #36188176
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как только SQL-запросами получить все списания партий
Hsig
Если организовать цикл сканирования строк ТаблицыРасходов
и для каждой строки запускать стандартную процедуру списания по ТаблицеПриходов, то проигрыш во времени будет огромным. (1)

Проигрыш по сравнению с чем?
Hsig
Ограничение на использование только команд Select можно , конечно, снять
и сформулировать задачу так :
Существует процедура построения ТаблицыСписания МНОГОКРАТНО , в 10 и более раз , превышающая по скорости алгоритм в (1) ?
Можно я отвечу вопросами на вопрос? А почему так критично быстродействие? В какой момент у вас это списание делается? Может пересмотреть идеологию? Речь идет о сиюминутном проведении конкретного документа или каком-то массовом перепроведении всего пакета документов за период?
А может вы просто хотите на лету считать все это? Лучше выбросить эту идею сразу и отдельно генерировать и хранить движения партий.
...
Рейтинг: 0 / 0
10.09.2009, 13:12
    #36188462
Hsig
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как только SQL-запросами получить все списания партий
Александр Гoлдун,

Конечно, речь идет о "массовом перепроведении всего пакета документов за период".
Имеются ввиду Расходные документы.
При изменении и проведении документов задним числом , хранящися движения , полученные в реальном времени при проведении каждого конкретного документа, становятся неактуальными.

Так вот, ставится задача быстрого правильного получения всех движений всех расходных документов.

Если получать движения (ТаблицуСписания) "подокументно" в цикле перебора всех расходных документов,
то получется очень медленно , т.к. нужно для каждого документа получать запросом текущие остатки по партиям на позицию проводимого документа. В этой же процедуре решается
задача правильности округления СуммыСписания при закрытии партии.

Проблема эта - старая. Возможно есть уже готовые решения для описанной в теме задачи ?
...
Рейтинг: 0 / 0
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Как только SQL-запросами получить все списания партий / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]