Вот то, что создал я :
--Таблица данных
CREATE TABLE IF NOT EXISTS dom(
idTab integer, -- номер id из таблицы groups
price INTEGER, -- сумма
datint INTEGER, -- Дата записи
parent INTEGER); -- признак родителя
-- таблица построения Tree
CREATE TABLE IF NOT EXISTS groups(
id INTEGER PRIMARY KEY, -- уникальный номер
name TEXT, -- имя
icon INTEGER, -- индекс иконки
parent INTEGER); -- признак (0-родитель, Х-кто папа?)
По "детям"
Данные за ДЕНЬ: SELECT sum(price) FROM dom WHERE datint=%1 GROUP BY idTab;
Данные за месяц:SELECT sum(price) FROM dom WHERE strftime("%Y%m",datint)=%1 GROUP BY idTab;
Данные за год: SELECT sum(price) FROM dom WHERE strftime("%Y",datint)=%1 GROUP BY idTab;
По "родителям":
Данные за ДЕНЬ: SELECT sum(price) FROM dom WHERE datint=%1 GROUP BY parent;
Данные за месяц:SELECT sum(price) FROM dom WHERE strftime("%Y%m",datint)=%1 GROUP BY parent;
Данные за год: SELECT sum(price) FROM dom WHERE strftime("%Y",datint)=%1 GROUP BY parent;
Я свободно могу в любом редакторе БД добавить новых родителей и детей(пункты Tree),
а тебе для этого придётся перекомпилировать свою программу.
А для составления запросов просто нужно знать порядок выполнения операторов в SQL-запросах.
Я выкладывал в теме "SQLite с чем его едят"
Порядок выполнения | Оператор | Что значит на русском |
1 | FROM | ИЗ |
2 | ON | НА |
3 | JOIN | ПРИСОЕДИНИТЬСЯ |
4 | WHERE | ГДЕ |
5 | GROUP BY | ГРУППА ПО |
6 | WITH CUBE или WITH ROLLUP | С КУБОМ или С РОЛЛУПОМ |
7 | HAVING | ИМЕЮЩИЙСЯ |
8 | SELECT | ВЫБРАТЬ |
9 | DISTINCT | НЕПОВТОРЯЮЩИЙСЯ |
10 | ORDER BY | СОРТИРОВАТЬ ПО |