Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

notax

Erro com distinct

Recommended Posts

Pessoal, bom dia!

 

Será que podem me dar mais uma forcinha aqui?

 

É o seguinte, tenho a seguinte query:

ComandoSQL0 = "SELECT a.*, b.`Codigo-cp` as Codigo, b.Dt_Nasc as Dt_Nasc, c.*, d.* "
ComandoSQL0 = ComandoSQL0 & "FROM completo a, simples b, Total c, tab_Ligacao_Codigo d "
ComandoSQL0 = ComandoSQL0 & "where a.UF LIKE '%" &cidade& "%' and a.`Codigo-cp` = b.`Codigo-cp` "
ComandoSQL0 = ComandoSQL0 & "and  Right(b.Dt_Nasc, 4) between '"&(aai)&"' and '"&(aaf)&"' "
ComandoSQL0 = ComandoSQL0 & "and a.`Codigo-cp` = c.`Codigo-cp` and d.cod = c.Cod and d.Tipo = 'EMP' "
'ComandoSQL0 = ComandoSQL0 & "and a.`Codigo-cp` in (select distinct `Codigo-cp` from Total where `Codigo-cp` = a.`Codigo-cp`) "
'ComandoSQL0 = ComandoSQL0 & "and c.Valor in (select max(Valor) as maxvalor from Total where `Codigo-cp` = a.`Codigo-cp`) "
ComandoSQL0 = ComandoSQL0 & "order by a.Nome "

 

Meu problema é o seguinte: na tabela Total podem se repetir várias vezes registros com o campo Codigo-cp, e daí na consulta acabam vindo vários registros repetidos... o que eu preciso é mostrar apenas 1 registro para cada codigo-cp da tabela Total, por isso tentei criar os dois trechos desabilitados acima...

 

Para esta consulta estou usando o access e não posso usar grup by pq ele retorna este erro:

Microsoft JET Database Engine error '80040e21'

Cannot group on fields selected with '*' (a).

/credsul/consulta2.asp, line 52

 

O que me aconselhariam?

Compartilhar este post


Link para o post
Compartilhar em outros sites

aparentemente o seu problema é apenas a preguiça :)

 

o erro do group by é pq você nao pode especificar a.*, tem que especificar todos os campos bem definidos.

mas, lembre de pegar apenas os campos que você quer de resulltado.

pegar campos que nao interessao, alem de deixar a query mais lenta ainda podem causar informações inválidas.

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não se trata de preguiça não... acontece que preciso vários campos... e se seleciono, mesmo que manualmente todos eles o erro muda, dizendo que não tem como dar grupo by em função de que existem muitos campos e/ou muitas tabelas sendo consultados...

 

Agradeço a ajuda...

 

Alguém mais se habilita?

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique se o Access suporta esse operador (*) nos campos

Compartilhar este post


Link para o post
Compartilhar em outros sites

se a mensagem de erro é o excesso de campos, então voce precisa diminuir o group by.

faça uma subquery que retorne apenas os ids dos registros que interessam e depois ponha a query pai para exibir os registros selecionados com todos os campos que realmente interessam.

Compartilhar este post


Link para o post
Compartilhar em outros sites

meu amigo, veja se isso resolve para voce.

 

ComandoSQL0 = "SELECT a.*, b.`Codigo-cp` as Codigo, b.Dt_Nasc as Dt_Nasc, d.* " _
& ", (select max(valor) from total where total.codigo_cp = a.codigo_cp) maxvalor" _
& " FROM completo a" _
& " inner join simples b on a.`Codigo-cp` = b.`Codigo-cp` " _
& " inner join tab_Ligacao_Codigo d on d.cod = c.Cod" _
& " where a.UF LIKE '%" & cidade & "%' " _
& " and  Right(b.Dt_Nasc, 4) between '" & aai & "' and '" & aaf & "'" _
& " and  d.Tipo = 'EMP' " _
& " order by a.Nome "

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.