Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2009, 20:44   #1
AntonStal
Новичок
Джуниор
 
Регистрация: 03.09.2009
Сообщений: 2
По умолчанию group by в sql-запросе

Не могу, к сожалению, получить результат следующего запроса:
Код:
with form1.Query1 do
           begin
            if Active then Close;
              sql.Clear;
              sql.add('SELECT IDDOCTOR,NUSERS,COMENT,sum(KOL) AS KOL');
                sql.add('FROM vremt ') ;
              sql.add(' group by 1,3  ORDER BY NUSERS,COMENT');
               active:=true;
             end;
Запрос из таблицы vremt.db. Если нет group by , то все работает. Что не так?

Последний раз редактировалось Stilet; 04.09.2009 в 08:17.
AntonStal вне форума Ответить с цитированием
Старый 03.09.2009, 21:49   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Запрос из таблицы vremt.db.
Вы лучше бы структуру таблицы привели. Что нам от имени Вашей таблицы?

1) одна 100% ошибка - в SQL, при использовании группировки по полям, кроме агрегаттных функций, можно выбирать (ну, и в SELECT можно писать) только те поля, которые указаны в поле GROUP BY!! Вы пытаетесь выбрать три поля (IDDOCTOR,NUSERS,COMENT), а группируете по двух полям.

2) не видя структуру, трудно сказать, что там у Вас за поля номер 1 и номер 3 (по которым идёт группировка: group by 1,3 ), но, чтобы точно исключить ошибку, я бы рекомендовал прямо указать поля, по которым Вы группируете выборку:
Код:
group by IDDOCTOR,NUSERS,COMENT
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.09.2009, 04:58   #3
AntonStal
Новичок
Джуниор
 
Регистрация: 03.09.2009
Сообщений: 2
По умолчанию

Спасибо большое. Все получилось. Нужно было действительно в запросе указать только поля, по которым идет группировка.

Я новичок в Делфи. В основном программирую в VFP. Можно ли результат запроса в Делфи вывести во временную таблицу или массив? И можно ли использовать запрос при создании нового запроса?

Последний раз редактировалось Stilet; 04.09.2009 в 08:35.
AntonStal вне форума Ответить с цитированием
Старый 04.09.2009, 08:21   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Можно ли результат запроса в Делфи вывести во временную таблицу или массив?
непосредственно во время запроса — имхо, нет, нельзя.
Можно на клиенте уже обработать и вывести (скорее всего, если на используемом у Вас компоненте нет сохранения, выводить прийдётся построчно... )

Цитата:
И можно ли использовать запрос при создании нового запроса?
А вот это самая большая "засада" в Дельфи при работе с БД...
Ответ - нет, нельзя!!!! Если запросы выполняете не через старый уродливый BDE, то эта проблема решается через вложенные запросы (правда, Ваша СУБД должна это поддерживать! но, помоему, все (или почти все) современные СУБД поддерживают вложенные запросы!!
А если не поддерживает - в топку такую СУБД!)
p.s. ах как это (запросы к результатам запроса) чудесно реализовано в C# — это просто сказка для разработчика...

Последний раз редактировалось Serge_Bliznykov; 04.09.2009 в 08:23.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменные в запросе SQL Talemir БД в Delphi 2 22.08.2009 21:22
Оператор IF в SQL-запросе eda SQL, базы данных 1 25.04.2009 18:41
Ковычки в SQL запросе XPAiN БД в Delphi 13 22.02.2008 13:36
Ошибка в SQL запросе eremin БД в Delphi 2 23.06.2007 07:13
Ошибка в SQL запросе...!? KeyDok БД в Delphi 5 21.06.2007 09:19