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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2011, 20:58   #1
us4us
Пользователь
 
Регистрация: 06.04.2011
Сообщений: 33
По умолчанию GROUP BY [InterBase]

Подскажите как выполнять запросы с GROUP BY ?

При составление даже самого элементарного

SELECT * FROM forma2 GROUP BY forma2.subject

IBConsole выдает

Dynamic SQL Error
SQL error code = -104
invalid column reference
Statement: SELECT * FROM forma2 GROUP BY forma2.subject
us4us вне форума Ответить с цитированием
Старый 28.05.2011, 21:19   #2
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Применение GROUP BY возможно только при наличии, как минимум, двух полей: обычного, по которому и осуществляется группировка, и агрегатному (count(*), sum() и т.п.)
ReportCube вне форума Ответить с цитированием
Старый 28.05.2011, 21:21   #3
us4us
Пользователь
 
Регистрация: 06.04.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от ReportCube Посмотреть сообщение
Применение GROUP BY возможно только при наличии, как минимум, двух полей: обычного, по которому и осуществляется группировка, и агрегатному (count(*), sum() и т.п.)
так а я вить выбрал все поля * их в таблице > 30
us4us вне форума Ответить с цитированием
Старый 28.05.2011, 21:27   #4
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

после ключевого поля GROUP BY перечисляются все поля, кроме агрегатных функций, которые включены в выборку, то есть идут после ключевого поля SELECT
ReportCube вне форума Ответить с цитированием
Старый 28.05.2011, 21:29   #5
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Что-то вроде этого сваяй и попробуй:
Цитата:
SELECT Pole1, Pole2, count(*) FROM MyTablic group by Pole1, Pole2
ReportCube вне форума Ответить с цитированием
Старый 28.05.2011, 21:57   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) Вам стоит почитать какой-нибудь букварь по SQL (например, "Понимание SQL" Мартина Грубера)

2) как уже было сказано выше - если Вы используете группировку по полю, то в списке получаемых полей можно использовать ТОЛЬКО те поля, которые указаны в GROUP BY (ну и агрегатные функции)!

поэтому, если Вы группируете по одному полю subject, то только это поле и можете указать в SELECT
Код:
SELECT forma2.subject FROM forma2 GROUP BY forma2.subject
если Вы задумаетесь о том, как работает group by - то поймёте, почему это так.. Там всё достаточно логично!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Group by and Having Progsenya SQL, базы данных 1 19.02.2011 19:18
GROUP BY Syltan SQL, базы данных 1 03.11.2009 13:39
Group в Excel Ora Общие вопросы Delphi 0 21.04.2009 11:04