![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте,уважаемые,программисты. У меня возникли проблемы с базой данной, уже голову сломала((( есть Delphi 7 и база в Access связанные между собой. есть все формы и запросы. но с одним вопросом из курсовой у меня возникли проблемы. есть на форме таблица (связанная конечно с Access) cостоит из полей "код" "цена блета" "Маршрут" "Кол - во проданных билетов" "Время отправки" "ФИО водителя". Мне необходимо отфилтровать данные так что бы выводилась выручка, за день, неделю, месяц, квартал и год. Я перечитала и Флёнова и по форумам поползала, но ничего не нашла
, может быть вы поможите, хотя на нужный материал в интернете или книгу. Заранее, спасибо, за помощь |
|
#2
|
||||
|
||||
|
А как фильтровать данные если нет поля "Дата продажи билета"?
|
|
#3
|
|||
|
|||
|
Цитата:
Подозреваю, что можно воспользоваться полем "Время отправки", если оно включает дату. Теперь по фильтрации. Не помню какие функции есть в аксесе, воспользуемся функцией SubStr, для вычленения нужного кода для генерации. Тогда будет выглядеть примерно так: Код:
-- для дня
select subst("Время отправки", 1, 10), sum("цена блета" * "Кол - во проданных билетов") from "Таблица" group by subst("Время отправки", 1, 10);
-- для месяца
select subst("Время отправки", 1, 7), sum("цена блета" * "Кол - во проданных билетов") from "Таблица" group by subst("Время отправки", 1, 7);
-- для года
select subst("Время отправки", 1, 4), sum("цена блета" * "Кол - во проданных билетов") from "Таблица" group by subst("Время отправки", 1, 4);PS. Предполагается, что при конвертации даты в строку мы получаем что-то типа формата YYYY-MM-DD HH:MI:SS.SSS. Если формат другой, то соответсвенно надо поправить параметры функции. |
|
#4
|
|||
|
|||
|
Цитата:
![]() |
|
#5
|
|||
|
|||
|
Огромное спасибо, что помогаете, но можете более подробно описать. Я просто ту тему проболела, а в конспектах мало что нашла(((
|
|
#6
|
|||
|
|||
|
Цитата:
А что тут объяснять? Использованна агрегрегатная функция SUM и группировка через GROUP BY. Значение для группировки вычисляется динамически с помощью функции SubStr. В зависимости от диалекта SQL (читай СУБД), можно применять разные методы для вычисления значения группировки. Если тебе нужна сумма за конкретный период, а не полный отчет, то можно обойтись без группировки, а просто ограничить выборку через WHERE: Код:
-- для дня
select sum("цена блета" * "Кол - во проданных билетов") from "Таблица" where "Время отправки" >= '2013-05-01' and "Время отправки" < '2013-05-02';
-- для месяца
select sum("цена блета" * "Кол - во проданных билетов") from "Таблица" where "Время отправки" >= '2013-05-01' and "Время отправки" < '2013-06-01';
-- для года
select sum("цена блета" * "Кол - во проданных билетов") from "Таблица" where "Время отправки" >= '2013-01-01' and "Время отправки" < '2014-01-01';ЗЫ. Представление даты в конкретной СУБД может отличаться. Вообще, читай о GROUP BY и аггрегатных функциях. А вообще, задавай конкретные вопросы, честно говоря, просто лениво тут набирать целые статьи, тем более, что все это есть, стоит только поискать. |
|
#7
|
|||
|
|||
|
Огромное спасибо, всё помогло
|