Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 SQL запрос - в чем я не прав? помогите!  [new]
labirint
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 112
Добрый день, всем!

Фокс ругается на group by, а я не пойму - как сделать правильно?
Читал книгу по фоксу 6, там почти подробно описано - как строить запросы с group by, вроде бы понятно, а как начинаю сам делать - не получается :о((
Прошу помочь с данным запросом.

вот запрос:
SELECT f.fundname, e.name, sum(m.fmsum) as fmsum FROM деньги_фондов m INNER JOIN справочник_фондов f ON f.fundid = m.fundid INNER JOIN exps_ref e ON e.id = m.fmexp WHERE m.fundid = 1 AND MONTH(m.fmdate) = 6 group by m.fmexp, e.id INTO cursor vw"
18 июн 12, 17:32    [12733628]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос - в чем я не прав? помогите!  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Если по простому, то в Group by должны быть перечислены все те поля, которые указаны в Select и не имеют аггрегирующих функций вроде sum(), max().

В данном случае у Вас в Select указаны поля f.fundname, e.name, а в group by указаны совершенно другие поля m.fmexp, e.id. Соответственно, надо изменить запрос следующим образом

SELECT ;
	f.fundname, ;
	e.name, ;
	sum(m.fmsum) as fmsum ;
FROM деньги_фондов m ;
INNER JOIN справочник_фондов f ON f.fundid = m.fundid ;
INNER JOIN exps_ref e ON e.id = m.fmexp ;
WHERE m.fundid = 1 ;
	AND MONTH(m.fmdate) = 6 ;
group by ;
	f.fundname, ;
	e.name ;
INTO cursor vw
18 июн 12, 17:46    [12733782]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос - в чем я не прав? помогите!  [new]
labirint
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 112
ВладимирМ
Если по простому, то в Group by должны быть перечислены все те поля, которые указаны в Select и не имеют аггрегирующих функций вроде sum(), max().

В данном случае у Вас в Select указаны поля f.fundname, e.name, а в group by указаны совершенно другие поля m.fmexp, e.id. Соответственно, надо изменить запрос следующим образом


Спасибо! Так срабатывает! И объяснили просто и понятно. Спасибо!
18 июн 12, 18:54    [12734152]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить