Название: Срочно нужна помощь Отправлено: 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 Название: Re: Срочно нужна помощь Отправлено: WW от Февраль 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 твоявтораядата; интерфейс - это твой полет мысли. правда есть уже кое какие устоявшиеся правила. главное - чтобы пользователю было удобно. Ну и напоследок: учиться, учиться и еще раз учиться! Название: Re: Срочно нужна помощь Отправлено: Tonal от Февраль 16, 2008, 13:24 Кроме between можно ещё использовать EXTRACT.
Тогда выражение ограничения для текушего месяца будет выглядеть так: Код: where extraxt(year from DateZajavky) = extraxt(year from current_date) Название: Re: Срочно нужна помощь Отправлено: Вячеслав от Февраль 17, 2008, 12:14 Кроме between можно ещё использовать EXTRACT. 1) 2 выражения вместо одногоТогда выражение ограничения для текушего месяца будет выглядеть так: Код: where extraxt(year from DateZajavky) = extraxt(year from current_date) 2) 2*n+2 раз вычисляеться extract (n - число записей) 3) Забыли про индексы .... Поправте плиз если я не прав ..... between по индексированому полю быстрее будет IMHO...... PS а еще в сторону ORDER BY и GROUP BY рекомендуеться посмотреть .... Название: Re: Срочно нужна помощь Отправлено: developer от Февраль 18, 2008, 17:34 Ребята спасибо за хорошие советы :).
|