|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Добрый день, добрые люди! Мне нужно решить следующую задачу: Ситуация . 1) на предприятии имеется ряд фондов, которые предназначены для финансирования отдельных хозяйственных процессов 2) иногда, по решению руководства, средства из какого-либо фонда берутся в заем для финансирования процессов другого фонда и впоследствии должны быть возвращены 3) на данный период имеется только учет займов, построен он таким образом: - в таблицу, где хранятся данные о средствах фондов и их движении, при займе заносятся 2 записи - одна для фонда, из которого берут - с минусом, 2-я для фонда, в который деньги поступают. Анализ Это только самый первичный учет, чтобы данные не пропали, но пользоваться ими не удобно. Задача - если нужно - реорганизовать данные - иметь возможность видеть "взаимные" обязательства фондов: - как минимум - в одной строке: из какого фонда в какой поступили средства - лучше - если займ из одного фонда перекрывается обязательствами из другого фонда, то показать каким фондом перекрыть этот займ Мои вопросы 1) как вы думаете - можно ли какую-то часть этой задачи решать ОДНИМ запросом? 2) возможно ли задачу минимум решать при существующей организации хранения данных? Благодарен за все ответы, комментарии и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2013, 13:13 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Храните данные об операции одной записью: Дата, ДебетФонд, КредитФонд, Сумма Тогда и учет, и выборки упростятся... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2013, 15:18 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirintесли нужно - реорганизовать данныеlabirintкак минимум - в одной строке: из какого фонда в какой поступили средстваСлово "проводка" о чём-нибудь говорит? :) labirint- лучше - если займ из одного фонда перекрывается обязательствами из другого фонда, то показать каким фондом перекрыть этот займНепонятно. Это что-то вроде "фонд А должен фонду Б 200, в то же время ему должны: В - 150, Г - 80, Д - 50. Вывести В и Д"? Или что? Может, пример приведёте? labirint1) как вы думаете - можно ли какую-то часть этой задачи решать ОДНИМ запросом?Да. labirint2) возможно ли задачу минимум решать при существующей организации хранения данных?Минимум - да. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2013, 15:18 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirint... в таблицу, где хранятся данные о средствах фондов и их движении, при займе заносятся 2 записи - одна для фонда, из которого берут - с минусом, 2-я для фонда, в который деньги поступают. Должны быть не записи, а поля. Хотя информации недостаточно. P.S. Это что, очередной курсач? И время как-то неудобно выбрано... суббота как-никак ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2013, 15:24 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
AndreTMХраните данные об операции одной записью: Дата, ДебетФонд, КредитФонд, Сумма Тогда и учет, и выборки упростятся... Я уже об этом думал, но "одна голова - хорошо...", а лучше - посоветоваться, а в данном случае одной моей - недостаточно :( ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 10:39 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
tanglirlabirintесли нужно - реорганизовать данныеlabirintкак минимум - в одной строке: из какого фонда в какой поступили средстваСлово "проводка" о чём-нибудь говорит? :) Немного, знаю, что это из бухгалтерии, но как осуществить - еще нет. labirint- лучше - если займ из одного фонда перекрывается обязательствами из другого фонда, то показать каким фондом перекрыть этот займНепонятно. Это что-то вроде "фонд А должен фонду Б 200, в то же время ему должны: В - 150, Г - 80, Д - 50. Вывести В и Д"? Или что? Может, пример приведёте? В точности - как Вы написали. labirint1) как вы думаете - можно ли какую-то часть этой задачи решать ОДНИМ запросом?Да. labirint2) возможно ли задачу минимум решать при существующей организации хранения данных?Минимум - да. Но, похоже, лучше сначала реорганизовать структуру данных и решить всю задачу оптимально? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 10:47 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Jonny540labirint... в таблицу, где хранятся данные о средствах фондов и их движении, при займе заносятся 2 записи - одна для фонда, из которого берут - с минусом, 2-я для фонда, в который деньги поступают. Должны быть не записи, а поля. Хотя информации недостаточно. P.S. Это что, очередной курсач? И время как-то неудобно выбрано... суббота как-никак Не курсач. Задача реальная. Стандартный бух-софт здесь не использовался изначально и пользуются этой информацией не бух-ры. Возможно поэтому "неадекват". А суббота у меня получилась рабочая и уже не первая. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 10:49 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
... не получилось правильно учесть цитаты и редактировать, поэтому переписываю... tanglirСлово "проводка" о чём-нибудь говорит? :) Немного. Знаю, что это из бухгалтерии, но как осуществить - еще нет. tanglirНепонятно. Это что-то вроде "фонд А должен фонду Б 200, в то же время ему должны: В - 150, Г - 80, Д - 50. Вывести В и Д"? Или что? Может, пример приведёте? В точности - как Вы написали. tanglirМинимум - да. Но, похоже, лучше сначала реорганизовать структуру данных и решить всю задачу оптимально? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 10:54 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirintНе курсач. Задача реальная. Стандартный бух-софт здесь не использовался изначально и пользуются этой информацией не бух-ры. Возможно поэтому "неадекват". А суббота у меня получилась рабочая и уже не первая.Да, не посмотрел профиль, сорри... Не только у тебя сб-вс рабочими бывают. :) Насчет реорганизации данных: имно, фондов не очень много бывает - 5-10. Вполне всю инфу по движению денег можно хранить в одной строке. Различать строки по дате, заодно потом можно "историю" показать. А насчет отображения - представляется что-то типа "таблицы чемпионата по футболу", где в пересечениях стоит сумма (+S или -S или 0). На экран в 17" вполне влезет. Ну и общие итоги, etc. Но это так, первое приближение, то, что первое приснилось... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 11:08 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirinttanglirСлово "проводка" о чём-нибудь говорит? :) Немного. Знаю, что это из бухгалтерии, но как осуществить - еще нет. Погугли бухучет счета и двойная запись ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 11:19 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Ну-у-уу, наро-о-од... Движемся в нужном направлении, всё же... AndreTMХраните данные об операции одной записью: Дата, ДебетФонд, КредитФонд, Сумма tanglirСлово "проводка" о чём-нибудь говорит? :)Что ещё-то надо для учёта? Рассказать ТСу, как завести таблицу со списком фондов? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 13:07 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Jonny540Да, не посмотрел профиль, сорри... Не только у тебя сб-вс рабочими бывают. :) Насчет реорганизации данных: имно, фондов не очень много бывает - 5-10. Вполне всю инфу по движению денег можно хранить в одной строке. Ну, как написали выше - поля: дата, счет-дебет, счет-кредит, сумма, да? Фондов действительно не много. И записей пока не очень много. Пожалуй сделаю небольшой "парсер", и перегоню данные в новую таблицу с такой структурой. А дальше будем сохранять одновременно - как было и в новую таблицу, чтобы не переделывать то, что уже работает в других "модулях". Jonny540Различать строки по дате, заодно потом можно "историю" показать. А насчет отображения - представляется что-то типа "таблицы чемпионата по футболу", где в пересечениях стоит сумма (+S или -S или 0). На экран в 17" вполне влезет. Ну и общие итоги, etc. Но это так, первое приближение, то, что первое приснилось... :) Это надо согласовать с пользователем. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 23:05 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
AndreTMНу-у-уу, наро-о-од... Движемся в нужном направлении, всё же... AndreTMХраните данные об операции одной записью: Дата, ДебетФонд, КредитФонд, Сумма Что ещё-то надо для учёта? Рассказать ТСу, как завести таблицу со списком фондов? Таблица со списком есть :) Я как перенесу эти операции в таблицу с предложенной структурой, выйду дальше на обсуждение - как же выбирать данные в требуемом виде? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 23:08 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
создал новую таблицу и задумался.......... В исходной таблице используем поля: fmdate - дата, fundid - фонд ИД, fmsum - сумма, oper_code - код операции в которых: в 2-х строках одинаковая дата сумма: с минусом в фонде, откуда взято и с плюсом (т.е. без знака) - куда внесено коды фондов коды операции соответствующие: займ отсюда - 3 займ сюда - 4 возврат отсюда - 6 возврат сюда - 7 Структура новой таблицы (как рекомендовали): lod - дата операции fromfund - из фонда (соответствует кодам 3 и 6) tofund - в фонд (операции 4 и 7) losum - сумма Правильно ли сделал? Возможно ли одним запросом это все скопировать в новую таблицу? Или придется писать что-то со сканом или do while? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 23:31 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
AndreTMЧто ещё-то надо для учёта?Да всё уже есть, осталось только решить вот эту задачку: labirinttanglirНепонятно. Это что-то вроде "фонд А должен фонду Б 200, в то же время ему должны: В - 150, Г - 80, Д - 50. Вывести В и Д"? Или что? Может, пример приведёте?В точности - как Вы написали. labirintВозможно ли одним запросом это все скопировать в новую таблицу?Если на каждую дату у каждого фонда может быть не более одной операции (каждого типа, т.е. максимум 4 разных в один день), то да. Правда, он медленный будет, но всё равно это разовый запрос. Прочитал внимательно, увидел поле "код операции". Тогда ответ - можно. labirintСтруктура новой таблицы (как рекомендовали): lod - дата операции fromfund - из фонда (соответствует кодам 3 и 6) tofund - в фонд (операции 4 и 7) losum - сумма Правильно ли сделал?Код операции забыли :) И если собираетесь различать займы и возвраты, то надо ещё поле добавить, с типом операции. Если оно вообще надо, конечно, ведь по сути у вас займ и возврат - одно и то же, это же не выдача кредитов какая-нибудь :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 05:24 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
tanglirlabirintВозможно ли одним запросом это все скопировать в новую таблицу? Прочитал внимательно, увидел поле "код операции". Тогда ответ - можно. Уже легче. Подкиньте идею, плииз - как примерно оно может быть? tanglirlabirintСтруктура новой таблицы (как рекомендовали): lod - дата операции fromfund - из фонда (соответствует кодам 3 и 6) tofund - в фонд (операции 4 и 7) losum - сумма Правильно ли сделал?Код операции забыли :) И если собираетесь различать займы и возвраты, то надо ещё поле добавить, с типом операции. Если оно вообще надо, конечно, ведь по сути у вас займ и возврат - одно и то же, это же не выдача кредитов какая-нибудь :) В новой таблице код как-то не прижился - есть ведь "откуда" и "куда", соответственно понятно - где "минус". Хотя, похоже "займ/возврат" не помешают. Спрошу пользователя - надо ли ему видеть: займ это или возврат? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 12:35 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Так, стоп. Прочитал ещё внимательней . oper_code - это 3/4/5/6, т.е. код типа операции (займ, возврат), а не уникальный код самой операции? Тогда снова встаёт вопрос - на каждую дату у каждого фонда может быть более одной операции (каждого типа, т.е. максимум 4 разных в один день) или нет? Если не может, то вот набросок: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 13:25 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
tanglirна каждую дату у каждого фонда может быть более одной операции ... ты в join фонд забыл включить :) и скобки в and ... or лучше по дате-сумме, если все в один день происходит и сумма только знаком отличается. Код: sql 1.
единственное проверить что в один день по каждому фонду одна сумма проходит один раз с плюсом и один с минусом. Этот запрос покажет "нездоровые" комбинации : Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 13:41 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Dima Tты в join фонд забыл включить :) Упс, это я его зря включил исправляюсь Код: sql 1.
проверочный Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 13:46 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
tanglirТак, стоп. Прочитал ещё внимательней . oper_code - это 3/4/5/6, т.е. код типа операции (займ, возврат), а не уникальный код самой операции? Тогда снова встаёт вопрос - на каждую дату у каждого фонда может быть более одной операции (каждого типа, т.е. максимум 4 разных в один день) или нет? Если не может, то вот набросок: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Просто хочется сказать ВАУ! Спасибо! oper_code - это код типа операции. Уникальные коды тоже есть, но они идут в общем потоке приходов/расходов фонда и как мне кажется в данном случае не помогут. У любого фонда количество таких операций в сутки не ограничено программно. Также нет ограничений организационных, т.о. попадаются операции займа и погашения в один и тот же день и любые другие. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 15:39 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Dima Tи скобки в and ... or ............ единственное проверить что в один день по каждому фонду одна сумма проходит один раз с плюсом и один с минусом. Одна сумма проходит по одному фонду с минусом, а по другому с плюсом, а не 2 записи по одному фонду с "+" и "-". Но Одна и та же сумма может, в принципе, пройти за день дважды из одного фонда в другой - т.е. 2 займа за день на одинаковую сумму. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 15:50 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirintУ любого фонда количество таких операций в сутки не ограничено программноТогда благодарить ещё ой как рано. То есть постулировать уникальность (фонд-операция-дата) мы не можем. Ну а как насчёт (фонд-операция-дата-сумма)? Если оно уникально, то поможет такое (спасибо Dima T за напоминание о скобках): Код: sql 1. 2. 3. 4.
В общем, Вам необходимо как-то найти уникальный идентификатор операции, иначе что делать вот с таким, например (всё проходит одной датой):фондтип_операциисумма1выдача займа2001выдача займа2002получение займа2003получение займа200Какая из первых двух строк связана с третьей, а какая с четвёртой? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 15:57 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirintНо Одна и та же сумма может, в принципе, пройти за день дважды из одного фонда в другой - т.е. 2 займа за день на одинаковую сумму.Тады ой. Ищите уник, иначе придётся делать сканами. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 15:58 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Сканами в принципе не сложно. Исхожу из того что выдача и получение происходит в один день, а также при выдаче из одного фонда вся сумма попадает в другой (а не частями в несколько). Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 16:47 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Dima TСканами в принципе не сложно. Исхожу из того что выдача и получение происходит в один день, а также при выдаче из одного фонда вся сумма попадает в другой (а не частями в несколько). Да, так. вижу, что 2-мя запросами и сканом можно перенести данные. Спасибо за код! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2013, 00:01 |
|
|
start [/forum/topic.php?fid=41&fpage=42&tid=1583066]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 270ms |
total: | 404ms |
0 / 0 |