|
|
Регистрация | << Правила форума >> | 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
|
|||
|
|||
Огромное спасибо, всё помогло
|