|
|
|
Вопрос про запрос, или Двойная запись
|
|||
|---|---|---|---|
|
#18+
Что-то никак мне не придумать, как сделать следующую вещь. Есть таблица приходов-расходов, в которой применяется т.н. "двойная запись" (как у бухов), т. е. дата, счет, корсчет, сумма. И никак мне запрос не составить, который бы считал остатки по счету на заданную дату, т.е. результат должен выглядеть так: Дата | Счет | Остаток ---------------------- 12.01.04 |сч1 | 300 12.01.04 |сч2 | 500 и т.д. Проблема в том, что сч1,сч2 может быть указан и в поле "счет" и в поле "корсчет", причем считать нужно не по всем полям, а только определенных типов (не все из них накопительные, например, глупо считать остаток по чисто расходному счету) Понятно, что в 2 запроса это реально. А в один никак не получится? Опять же, если в один можно, тогда применительно к ASA - что выгодней по времени: считать одним запросом или двумя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 07:26 |
|
||
|
Вопрос про запрос, или Двойная запись
|
|||
|---|---|---|---|
|
#18+
Желательно бы увидеть для начала структуру таблицы скриптом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 08:19 |
|
||
|
Вопрос про запрос, или Двойная запись
|
|||
|---|---|---|---|
|
#18+
Я ее в общем-то описал уже. Навроде этого: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 12:06 |
|
||
|
Вопрос про запрос, или Двойная запись
|
|||
|---|---|---|---|
|
#18+
Ну тогда по идее получение сумм каждого счета за указанный день будет примерно выглядеть так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Далее в зависимости от желания можно этот запрос вынести в ХП, с параметром @transaction_date и убрать из запросов и группировок поле transaction_date, и использовать эту ХП уже для дальнейших операций, например прибавляя полученные суммы в таблицу остатков по счетам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 12:26 |
|
||
|
Вопрос про запрос, или Двойная запись
|
|||
|---|---|---|---|
|
#18+
Бррр... Что-то не то. Я плохо объяснил, что ли? Идея в том, чтобы подсчитать остаток на счетах на указанную дату. Ну, например (для простоты возьмем один счет, который со значением 1, остальные счета будем считать расходными статьями, накопление на них не интересует) в таблице moneys живут такие данные: tr_date | oursacc | corracc | income 1.11.2004 | 1 | 5 | 50 2.11.2004 | 1 | 3 | -40 3.11.2004 | 1 | 145 | 150 4.11.2004 | 7 | 1 | -60 5.11.2004 | 1 | 563 | -100 Так вот, запрос на дату 3.11.2004 должен выдать сумму остатка=50-40+150=160 Запрос на 5.11.2004 должен выдать сумму остатка=50-40+150+60-100=120 А у вас в запросе суммируется приход за день. Это и проще можно сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 12:55 |
|
||
|
Вопрос про запрос, или Двойная запись
|
|||
|---|---|---|---|
|
#18+
Ну а кто мешает в предложенном мною запросе поставить не равно дате, а меньше либо равно указанной дате ? На выходе по счетам будет получен остаток. P.S. Если запросы с остатками идут довольно часто, то может быть имеет смысл все таки сделать аггрегатную табличку, в которой на каждый день и каждый счет хранить зафиксированный остаток ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 13:19 |
|
||
|
Вопрос про запрос, или Двойная запись
|
|||
|---|---|---|---|
|
#18+
автор Ну а кто мешает в предложенном мною запросе поставить не равно дате, а меньше либо равно указанной дате ? На выходе по счетам будет получен остаток На самом деле, я так конечно уже попробовал. Херня какая-то получилась, прости меня Господи. На остатки не похожая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 13:48 |
|
||
|
Вопрос про запрос, или Двойная запись
|
|||
|---|---|---|---|
|
#18+
Группировку по дате убрать надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 13:49 |
|
||
|
Вопрос про запрос, или Двойная запись
|
|||
|---|---|---|---|
|
#18+
Блин, да я уж понял, недосмотрел, поторопился и еще и со счетами напутал. Работает на самом деле :) Главное я узнал - в один запрос можно. Заодно полезному научился - как можно результаты UNION просуммировать. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 13:56 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=32809583&tid=2014045]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
161ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 268ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...