Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нужно составить запрос [D7, dBase, FoxPro]


ambhtr ©   (2007-08-03 15:42:00) 

Существует база, в которой есть поля: IndexOper, DtArh.
Поле DtArh типа TDateTime. В результате запроса нужно учитывать только дату.
Есть и работающий запрос:

select distinct IndexOper, cast(cast(extract(DAY from DtArh) as varchar(2))+ '.' +
                               cast(extract(MONTH from DtArh) as varchar(2))+ '.' +
                               cast(extract(YEAR from DtArh)as varchar(4)) as DATE) dt
 from MyTbl.DBF
 where IndexOper IN (460,461,465,466,467,468)
 and DtArh > "01.07.2007"
 and DtArh < "31.07.2007"
 order by IndexOper, dt'

Теперь нужно в него добавить подсчет записей, т.е. COUNT(*),
Сначало, он требует GROUP BY, заменяю ORDER BY-> GROUP BY.
Тогда он пишет что имя поля dt - неправильное, а если я оставляю GROUP BY IndexOper и все, то пишет, что GROUP BY не поддерживает вычисляемые поля.
Подскажите, можно ли как-нибудь решить эту проблему?


Loginov Dmitry   (2007-08-03 21:21:00) [1]

> Подскажите, можно ли как-нибудь решить эту проблему?


Если используешь BDE (подозреваю, что именно так), то можно выкрутиться через sql-файл.
Сохрани скрипт из [0] в sql-файл. А количество подсчитывай так:

SELECT Count(S.*) AS RecCount FROM "C:\.....\FileName.sql" S


Desdechado   (2007-08-03 20:27:00) [2]

> Теперь нужно в него добавить подсчет записей, т.е. COUNT(*),
Остается выяснить, по какому полю/группе полей группировать.


_Asph   (2007-08-03 17:10:00) [3]

ORDER BY - существует, для упорядычевания получаемых данных, в то время как
GROUP BY - агрегирует данные. На что он вам прямо и указывает, у вас нет агрегируемых данных. COUNT в запросе, выводит число агрегированных по заданному условию записей.
Вы уж определитесь, что и главное куда? Вы хотите получить.


ambhtr   (2007-08-03 16:32:00) [4]

Согласен. Оговорился. Конечно - таблица.
Если я использую ORDER BY, то выдается сообщение об ошибке:
"GROUP BY is reguired when both aggregate and non-aggregate fields are used in result set."
поэтому я и заменил.


Сергей М.   (2007-08-03 16:22:00) [5]


> Существует база, в которой есть поля


Нет такой "базы".
Таблица - да, в таблице есть поля.


> заменяю ORDER BY-> GROUP BY.


С какого перепугу-то ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо