Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / SQLite Новый топик    Ответить
 Oстаток на каждый день  [new]
shalx
Member

Откуда:
Сообщений: 79
Привет
создаем таблицу
create table if not exists users (id integer primary key,dates, inmoney,outmoney);


и

INSERT INTO table (dates,nmoney,outmoney) values (2019-01-01, 12, 5);


так каждый день.

Kак определить сколько денег остается каждый день после закрытия?

Только без over() пожалуйста.
19 фев 19, 16:58    [21814568]     Ответить | Цитировать Сообщить модератору
 Re: Oстаток на каждый день  [new]
Dima T
Member

Откуда:
Сообщений: 13939
shalx
Только без over() пожалуйста.

Эта задача противоречит реляционной теории. В теории нет порядка следования записей при хранении, т.е. нет "вчера/сегодня/завтра", поэтому средствами стандартного SQL задача нерешаема.
Только извраты типа over() и т.п. в соответствии с диалектом SQL конкретной СУБД.

Как вариант добавить поле "ost_end" и в триггере его рассчитывать, но учти что триггеры в SQLite могут отключаться.
Тут минус в том что если поменяешь остаток год назад, то придется пересчитать остатки за весь год, поэтому удобнее сделать отдельную таблицу (дата, остаток) и внести туда контрольные точки, например на 1-е число каждого месяца, а внутри месяца считать от ближайшей контрольной точки.
19 фев 19, 18:21    [21814696]     Ответить | Цитировать Сообщить модератору
 Re: Oстаток на каждый день  [new]
VSVLAD
Member

Откуда: Краснодар
Сообщений: 1313
shalx
Только без over()


Left join самой на себя с условием + Группировка. Чем больше данных, тем больше тормозов
19 фев 19, 19:18    [21814771]     Ответить | Цитировать Сообщить модератору
 Re: Oстаток на каждый день  [new]
shalx
Member

Откуда:
Сообщений: 79
Dima T,
cпасибо за информацию ,задачу собираюсь сделать на php но тоже получается костыльно , несколько циклов и пару запросов все равно понадобится.
А вы не знаете на чем делают прикладные приложения, какие базы данных в них лучше использовать?
19 фев 19, 22:10    [21814933]     Ответить | Цитировать Сообщить модератору
 Re: Oстаток на каждый день  [new]
Dima T
Member

Откуда:
Сообщений: 13939
shalx
Dima T,
cпасибо за информацию ,задачу собираюсь сделать на php но тоже получается костыльно , несколько циклов и пару запросов все равно понадобится.

Зачем несколько циклов? Получаешь остаток на начало периода, затем в один проход рассчитываешь для каждого дня.
shalx
А вы не знаете на чем делают прикладные приложения, какие базы данных в них лучше использовать?

Обычно PHP в связке с MySQL используют.
20 фев 19, 07:42    [21815090]     Ответить | Цитировать Сообщить модератору
 Re: Oстаток на каждый день  [new]
shalx
Member

Откуда:
Сообщений: 79
Dima T
shalx
Dima T,
cпасибо за информацию ,задачу собираюсь сделать на php но тоже получается костыльно , несколько циклов и пару запросов все равно понадобится.

Зачем несколько циклов? Получаешь остаток на начало периода, затем в один проход рассчитываешь для каждого дня.
shalx
А вы не знаете на чем делают прикладные приложения, какие базы данных в них лучше использовать?

Обычно PHP в связке с MySQL используют.


Нужны все остатки сразу, для всех дней.
Задачу выполнил и не очень криво. Хочу показать
    $a1=$this->date1->value;
    $a2=$this->date2->value; 
$a=$this->form('balances')->table->selectedItem;
$this->form('balances')->table3->items->clear();
$artar=$this->database->query('SELECT tar from users where tar BETWEEN "'.$a1.'" AND "'.$a2.'" group by tar');
foreach($artar as $vt){
$arrt = ($vt->toArray());
//$rrt[] = $arrt[tar];
$ar=$this->database->query('SELECT  tar, round(sum(deb-kr),2) from users as gat  WHERE gat = "'.$a[an].'" 
and tar BETWEEN "'.$a1.'" AND "'.$arrt[tar].'"  order by "round(sum(deb-kr),2)" ');    
foreach($ar as $v){
$arr[]= ($v->toArray());

                        }
                     } 
$input = array_map("unserialize", array_unique(array_map("serialize", $arr)));
$this->form('balances')->table3->items->addAll($input); 


Но в excel получается такая штука очень красиво, хочу встраиваемый excell
20 фев 19, 09:47    [21815142]     Ответить | Цитировать Сообщить модератору
Все форумы / SQLite Ответить