Russian Qt Forum
Ноябрь 23, 2024, 17:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Срочно нужна помощь  (Прочитано 3800 раз)
developer
Гость
« : Февраль 16, 2008, 11:59 »

Здравствуйте, кто-нибудь помогите разобраться. Вообщем дело звучит так - есть небольшая база данных, одна таблица которой регистрирует входные заявки(припустим приходний ордер в бухгалтерии), будем называть ее zayavky . Приблизительная структура етой таблицы такова

id|NumberZayavky|DateZayavky|SumZayavky|

Где id - ето уникальный идентификатор заявки;
NumberZayavky - ето внутренний номер заявки(например ПН12001) - задаеться пользователем;
DateZayavky - ето дата ввода заявки - задаеться пользователем;
SumZayavky - ето сума которая была проплачена по етой заявке;

Теперь вопрос ко всем кто возможно решал подобную задачу.
Мне нужно чтобы журнал некоторой программы (типа меню - "Заявки Приходные"), отображал только заявки датированные текущим месяцем и сумму подбивал только по текущим заявкам.Например, было несколько заявок в марте(10 штук) и апреле(15 штук), будем предполагать что текущий месяц апрель. Как грамотно и без глюков сделать так чтоби етот журнал отображал и подбивал сумму только по апрелевским заявкам. И как грамотно сделать доступ к мартовским заявкам, то-есть чтоби к ним тоже был доступ и можно было просмотреть сумму по всем мартовским заявкам.
И еще как сделать ефективний доступ к заявкам если ета таблица имеет заявки по всех месяцах года, а ето очень много записей.
Программирую на QT 4.3.3 open source.
MinGW 5....
Windows XP Proffesional SP1
MySql 5.0.47
Записан
WW
Гость
« Ответ #1 : Февраль 16, 2008, 12:39 »

Вообще-то, ту qt ни причем. Учить SQL. Без знания его - хоть Qt, хоть .NET тебе не помогут.
выбор из базы: select * from zajavky where DateZajavky between твояперваядата and твоявтораядата; ставишь первую дату 01.04.твойгод, вторую - 01.05.твойгод и имеешь свой апрель.
сумма select sum(SumZajavky) as mysum from zajavky where DateZajavky between твояперваядата and твоявтораядата;
интерфейс - это твой полет мысли. правда есть уже кое какие устоявшиеся правила. главное - чтобы пользователю было удобно.
Ну и напоследок: учиться, учиться и еще раз учиться!
Записан
Tonal
Гость
« Ответ #2 : Февраль 16, 2008, 13:24 »

Кроме between можно ещё использовать EXTRACT.
Тогда выражение ограничения для текушего месяца будет выглядеть так:
Код:
where extraxt(year from DateZajavky) = extraxt(year from current_date)
and extraxt(month from DateZajavky) = extraxt(month from current_date)
Записан
Вячеслав
Гость
« Ответ #3 : Февраль 17, 2008, 12:14 »

Кроме between можно ещё использовать EXTRACT.
Тогда выражение ограничения для текушего месяца будет выглядеть так:
Код:
where extraxt(year from DateZajavky) = extraxt(year from current_date)
and extraxt(month from DateZajavky) = extraxt(month from current_date)
1) 2 выражения вместо одного
2) 2*n+2 раз вычисляеться extract (n - число записей)
3) Забыли про индексы ....
Поправте плиз если я не прав .....
between по индексированому полю быстрее будет IMHO......

PS а еще в сторону ORDER BY и GROUP BY рекомендуеться посмотреть ....
Записан
developer
Гость
« Ответ #4 : Февраль 18, 2008, 17:34 »

Ребята спасибо за хорошие советы  Улыбающийся.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 21.