listar dados com nome duplicados

Delphi

20/01/2011

Bom dia.
Pessoal, tenho um BD em Access e nele tenho uma tabela com as seguintes informações
id - N.A
assunto - Texto
data - Data/Hora
para - Texto

Fiz uma consulta num dbgrid para listar todas as informações dessa tabela, mas as informações do campo assunto podem se repetir várias vezes, então eu gostaria de listas no dbgrid só os dados cujos o campo [b]assunto[b] aparecam mais de uma vez.

Já tentei assim

SELECT COUNT(*),  assunto  FROM telemedicina

GROUP BY assunto

HAVING COUNT(*) > 1 



Só q dessa forma só aparece no grid o campo assunto, caso eu tente acrescentar os outros campos dá erro.
Alguém pode me ajudar ?
Vlw
Marcos Barbosa

Marcos Barbosa

Curtidas 0

Respostas

Marco Salles

Marco Salles

20/01/2011

bom para Sql que eu conheço é o Emerson ... Mas ele não apareceu , então vou palpitar Nao estaria faltando vc colocar os outros campos ???         select camposA,campoB,assunto,count(*) FROM telemedicina
    having count(*) > 1
    group by campoA,CampoB,assunto   é so um palpite
 
GOSTEI 0
Marcos Barbosa

Marcos Barbosa

20/01/2011

Já tinha tentando assim também, mas ele dá erro de sintaxe na cláusula HAVING.
GOSTEI 0
Marcos Barbosa

Marcos Barbosa

20/01/2011

Já tinha tentando assim também, mas ele dá erro de sintaxe na cláusula HAVING.

Oh, ñ sei se tem alguma coisa que influêncie, mas eu estou usando o componente ADOquery
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

20/01/2011

Dentro do próprio access tem uma opçao de fazer consulta, para mostrar dados duplicados. crie uma nova consulta e nas opções coloque assistente de consulta localizar duplicados. Prontinho você ja tem uma tabela com todos os dados duplicados. Abraços
GOSTEI 0
Marcos Barbosa

Marcos Barbosa

20/01/2011

Se eu trocar a ordem ho HAVING  e coloca-lo no final não aparece mais erro algum, mas em contrapartida, ñ aparece mais nenhuma informação
SELECT Código, data, para, assunto, COUNT(*)  
FROM telemedicina
GROUP BY Código, data, para, assunto
HAVING COUNT(*) >1 

GOSTEI 0
Leonardo Xavier

Leonardo Xavier

20/01/2011


já tentou isso?

Dentro do próprio access tem uma opçao de fazer consulta, para mostrar dados duplicados. crie uma nova consulta e nas opções coloque assistente de consulta localizar duplicados. Prontinho você ja tem uma tabela com todos os dados duplicados. Abraços


GOSTEI 0
Marcos Barbosa

Marcos Barbosa

20/01/2011

Pessoal agradeço muito pela ajuda de todos, foram muito rápidos e atenciosos.
Consegui resolver da seguinte forma:
SELECT  t.* FROM telemedicina t
WHERE EXISTS(SELECT COUNT(*), x.assunto FROM telemedicina x
                 where x.assunto = t.assunto
                GROUP BY x.assunto
                HAVING COUNT(*) > 1 )
ORDER BY assunto, data


Tópido resolvido
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

20/01/2011

nao esqueça de colocar este tópico como concluído. Isso mantem o fórum organizado. Abraços
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

20/01/2011

não conheço ACCESS e não sei se ele suporta todos os comandos/sintaxes SQL...

de qualquer forma, vai uma tentativa:

SELECT *
FROM telemedicina
WHERE assunto IN
(SELECT assunto
 FROM telemedicina
 GROUP BY assunto
 HAVING COUNT(*) > 1)

 
GOSTEI 0
Marco Salles

Marco Salles

20/01/2011

Pessoal agradeço muito pela ajuda de todos, foram muito rápidos e atenciosos.
Consegui resolver da seguinte forma:
SELECT  t.* FROM telemedicina t
WHERE EXISTS(SELECT COUNT(*), x.assunto FROM telemedicina x
                 where x.assunto = t.assunto
                GROUP BY x.assunto
                HAVING COUNT(*) > 1 )
ORDER BY assunto, data


Tópido resolvido
  Perfeito .... Eu estava aqui quase conseguindo com o firebird, mas estava faltando duas coisas fundamentais   o Exists e a comparação  where x.assunto = t.assunto  , ai dava erro     Olha ai no Firebird  
select T.Country, T.Currency  from COUNTRY T
Where EXISTS (SELECT count(*),x.Currency FROM  COUNTRY X
Where X.CURRENCY = T.CURRENCY
GROUP BY X.CURRENCY
HAVING COUNT(*) > 1 )
ORDER BY T.Country

Obrigado Tb
GOSTEI 0
Marcos Barbosa

Marcos Barbosa

20/01/2011

O bom é que ficará as duas formas aí para que quiser usar posteriormente.

Vlw.
GOSTEI 0
Marcos Barbosa

Marcos Barbosa

20/01/2011

Galera, onde posso indicar que o tópico está concluído ?

O bom é que ficará as duas formas aí para que quiser usar posteriormente.

Vlw.
GOSTEI 0
Pjava

Pjava

20/01/2011

Já experimentou usar o distinct?

Select distinct.....
GOSTEI 0
Wilson Junior

Wilson Junior

20/01/2011

No cabeçalho da última resposta tem sempre uma opção para modificar o status. Mas pode deiixar q concluo ele pra vc.

Espero ter colaborado.
GOSTEI 0
POSTAR