O que está errado no meu select com group?

Firebird

11/05/2007

Bom dia amigos, a sintaxe parece-me estar correta (mas está com errado e portanto não está correta), mas não consigo identificar o problema.

Tenho uma tabela de atendimentos com nomes de clientes repetidos, num group quero agrupá-los para que o usuário possa seleciona e trazer os dados de endereço e outros.

Erro retornado:

Invalid expression in th select list (not contained in either an aggregate function or the GROUP BY clause)



Segue a sintaxe:

      CommandText := ´select * from ficha where nomcli like :nomeproc and codemp=:Codemp group by nomcli order by nomcli´;
      ParamByName(´NomeProc´).AsString  := CampoProcura.Text+´¬´ ;



aguardo ajuda
mario


Aldus

Aldus

Curtidas 0

Respostas

Anderson Belém

Anderson Belém

11/05/2007

Como seria esse agrupamento, desculpe mais não entendi o que vc quer.
Pode exemplificar?

Erro retornado:
Invalid expression in th select list (not contained in either an aggregate function or the GROUP BY clause)
Segue a sintaxe:
      CommandText := ´select * from ficha where nomcli like :nomeproc and codemp=:Codemp group by nomcli order by nomcli´;
      ParamByName(´NomeProc´).AsString  := CampoProcura.Text+´¬´ ;



Uso do Group By
O comando group by poderá ser usado em conjunto com as seguintes funções:
MAX retorna o maior valor de uma coluna
MIN retorna o menor valor de uma coluna
COUNT conta o número de registros de uma coluna
AVG retorna a média aritimética dos valores de uma coluna
SUM retorna a soma dos valores de uma coluna


GOSTEI 0
Pestana_

Pestana_

11/05/2007

Qual banco vc está usando?

experimente colocar o campo que está sendo agrupado no caso (nomcli) no select, ficaria assim: Select nomcli From ficha .....

outra questão, você está acrescentando um parâmetro a mais neste select, porque não está especificado ai no exemplo?

ParamByName(´Codemp´).Value  := NomeVariavel;



flw.


GOSTEI 0
Aldus

Aldus

11/05/2007

Bom dia, utilizo Fire 2.

Aquele campo parâmetro é um Edit que uso para procurar, no caso do Nomcli, quando digito nesse Edit o sistema vai filtrando por ´like´.

Preciso usar ´*´, pois após agrupar, se usuário pres enter, eu levo a alguns edits os valores de nome, endereco, fone.
Já tentei usar select nomcli,endereco,bairro,fone from ficha group by nomcli só que retorna o mesmo erro, se eu usar apenas select nomcli from ficha group by nomcli, funciona perfeitamente, só que daí não tenho acesso aos campos endereço,bairro,...

Att


GOSTEI 0
Martins

Martins

11/05/2007

Bom dia, utilizo Fire 2. Aquele campo parâmetro é um Edit que uso para procurar, no caso do Nomcli, quando digito nesse Edit o sistema vai filtrando por ´like´. Preciso usar ´*´, pois após agrupar, se usuário pres enter, eu levo a alguns edits os valores de nome, endereco, fone. Já tentei usar select nomcli,endereco,bairro,fone from ficha group by nomcli só que retorna o mesmo erro, se eu usar apenas select nomcli from ficha group by nomcli, funciona perfeitamente, só que daí não tenho acesso aos campos endereço,bairro,... Att


Tente assim:

select Count(nomcli), endereco, bairro, fone from ficha group by nomcli



GOSTEI 0
Aldus

Aldus

11/05/2007

Coloquei o código como vc sugeriu, sem where, like ou order e não aceita o group se tiver mais de um campo no select.

Continuou com o mesmo erro


GOSTEI 0
Martins

Martins

11/05/2007

Tente então assim.

select nomcli, endereco, bairro, fone, Count(nomcli) 
from ficha group by nomcli, endereco, bairro, fone



GOSTEI 0
Aldus

Aldus

11/05/2007

Martins, funcionou com última modificação sugerida.

Obrigado pela atenção e bom fim de semana.

Att
Mario


GOSTEI 0
Martins

Martins

11/05/2007

Martins, funcionou com última modificação sugerida. Obrigado pela atenção e bom fim de semana. Att Mario


:D Sem problemas, se precisar estaremos prontos para tentar ajudar.

boa sorte.


GOSTEI 0
POSTAR