Вверх ↑
Ответов: 16884
Рейтинг: 1239
#1: 2017-04-23 11:33:48 ЛС | профиль | цитата
Dad2016, вот объясни мне - зачем ты создал 40 полей ?
Вот то, что создал я :
--Таблица данных
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 с чем его едят"
Порядок выполненияОператорЧто значит на русском
1FROMИЗ
2ONНА
3JOINПРИСОЕДИНИТЬСЯ
4WHEREГДЕ
5GROUP BYГРУППА ПО
6WITH CUBE или WITH ROLLUPС КУБОМ или С РОЛЛУПОМ
7HAVINGИМЕЮЩИЙСЯ
8SELECTВЫБРАТЬ
9DISTINCTНЕПОВТОРЯЮЩИЙСЯ
10ORDER BYСОРТИРОВАТЬ ПО

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Редактировалось 6 раз(а), последний 2017-04-23 13:06:21