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

Откуда: Украина
Сообщений: 46
Извините что создаю дубль, первый раз написал не в тот раздел.

select N1,N2,N3,N4,sum(N5) as N5 from 'input.dbf' group by N4,N2,N3,N1 order by N2
select N1,N2,N3,N4,sum(N5) as N5 from 'input.dbf' group by N4 order by N2
Первый запрос не выполняет что нужно, второй не выполняется, пишет мол занесите имена столбиков в group by. Работаю через BDE. Как можно обойти эту ситуацию?
31 авг 09, 17:37    [7599613]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY в dbase  [new]
проходящий.
Guest
dr1v3,
и какие значения первых трех полей нужно брать в случае их неодинаковости при одинаковом значении N4? Jndtn "любое" - непожходит, ибо не дает однозначности.
31 авг 09, 17:41    [7599640]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY в dbase  [new]
tanglir
Member

Откуда:
Сообщений: 28966
dr1v3
Первый запрос не выполняет что нужно
А ЧТО нужно (и что он выполняет)?
PS. Имхо это тема скорее о group by в BDE.
31 авг 09, 17:41    [7599641]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY в dbase  [new]
dr1v3
Member

Откуда: Украина
Сообщений: 46
проходящий.,

нужно брать значение только поля N4(там артикул), в остальных ахинея. А вот для вывода нужны все столбики.
31 авг 09, 17:44    [7599665]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY в dbase  [new]
проходящий.
Guest
dr1v3
проходящий.,

нужно брать значение только поля N4(там артикул), в остальных ахинея. А вот для вывода нужны все столбики.
В запросе так и написать - бери aхинею?
N1 N2 N3 N4 N5
1 2 3 4 5
2 3 4 4 6
--------------
? ? ? 4 11

Что писать вместо знаков вопросов?
31 авг 09, 17:48    [7599688]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY в dbase  [new]
dr1v3
Member

Откуда: Украина
Сообщений: 46
проходящий.
dr1v3
проходящий.,

нужно брать значение только поля N4(там артикул), в остальных ахинея. А вот для вывода нужны все столбики.
В запросе так и написать - бери aхинею?
N1 N2 N3 N4 N5
1 2 3 4 5
2 3 4 4 6
--------------
? ? ? 4 11

Что писать вместо знаков вопросов?


Там должно быть значение из любой строки с N4=4. Там стоят названия одного и того же товара в Character
31 авг 09, 17:52    [7599715]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY в dbase  [new]
dr1v3
Member

Откуда: Украина
Сообщений: 46
dr1v3,

P.S. в названия товаров могут отличаться в пределах опечатки, поэтому их нельзя брать в group by
31 авг 09, 17:54    [7599738]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY в dbase  [new]
проходящий.
Guest
dr1v3
проходящий.
dr1v3
проходящий.,

нужно брать значение только поля N4(там артикул), в остальных ахинея. А вот для вывода нужны все столбики.
В запросе так и написать - бери aхинею?
N1 N2 N3 N4 N5
1 2 3 4 5
2 3 4 4 6
--------------
? ? ? 4 11

Что писать вместо знаков вопросов?


Там должно быть значение из любой строки с N4=4. Там стоят названия одного и того же товара в Character
Я ж писал, что ответ "любой" не катит ибо не дает однозначности. Комп тупой, он не знает, что такое "любой" и он не может выбрать. О чем, собственно он и ругается. Укажите ясные, точные и однозначные критерии отбора. Не мне, компу.
31 авг 09, 17:55    [7599747]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY в dbase  [new]
dr1v3
Member

Откуда: Украина
Сообщений: 46
проходящий.,

подскажи, как указать?
31 авг 09, 18:05    [7599794]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY в dbase  [new]
проходящий.
Guest
dr1v3
проходящий.,

подскажи, как указать?
Да откуда я могу это знать? Это не мои данные, я их не вижу, не знаю семантики полей и т.д. К тому же я не телепат.
31 авг 09, 18:13    [7599837]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY в dbase  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Если нужно "любое", то используй MAX() или MIN()

select MAX(N1) as N1, MAX(N2) as N2, MAX(N3) as N3, N4, sum(N5) as N5 ;
from 'input.dbf' ;
group by N4 ;
order by 2

Поля, которые не указаны в Group By обязательно должны быть вычислены через групповые функции.
31 авг 09, 18:37    [7599939]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY в dbase  [new]
dr1v3
Member

Откуда: Украина
Сообщений: 46
ВладимирМ
Если нужно "любое", то используй MAX() или MIN()

select MAX(N1) as N1, MAX(N2) as N2, MAX(N3) as N3, N4, sum(N5) as N5 ;
from 'input.dbf' ;
group by N4 ;
order by 2

Поля, которые не указаны в Group By обязательно должны быть вычислены через групповые функции.


Спасибо, это как раз то, что мне было нужно.
31 авг 09, 19:23    [7600086]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY в dbase  [new]
const64
Member

Откуда:
Сообщений: 785
dr1v3
ВладимирМ
Если нужно "любое", то используй MAX() или MIN()

select MAX(N1) as N1, MAX(N2) as N2, MAX(N3) as N3, N4, sum(N5) as N5 ;
from 'input.dbf' ;
group by N4 ;
order by 2

Поля, которые не указаны в Group By обязательно должны быть вычислены через групповые функции.


Спасибо, это как раз то, что мне было нужно.


dr1v3

Там должно быть значение из любой строки с N4=4. Там стоят названия одного и того же товара в Character


+1
Вы должны понимать, что при таком подходе, в общем случае, Вы не получите значения N1, N2 и N3 именно из одной строки...
2 сен 09, 07:15    [7606201]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить