DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
Marcos Barbosa
 

País: Brasil
Estado: BA
Cidade: SALVADOR
Mensagens: 89
 Postado em: 20/1/2011 10:56:18 AM

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 assunto aparecam mais de uma vez.

Já tentei assim
#Código

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
MARCO ANTONIO SALLES
 
 
 


País: Brasil
Estado: MG
Cidade: Muriae
Mensagens: 1679
 Postado em: 20/1/2011 11:22:01 AM
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
 

 
Marcos Barbosa
 

País: Brasil
Estado: BA
Cidade: SALVADOR
Mensagens: 89
 Postado em: 20/1/2011 11:30:27 AM
Já tinha tentando assim também, mas ele dá erro de sintaxe na cláusula HAVING.

 
Marcos Barbosa
 

País: Brasil
Estado: BA
Cidade: SALVADOR
Mensagens: 89
 Postado em: 20/1/2011 11:33:01 AM

Citação:
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

 
LEONARDO XAVIER
 
 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 20/1/2011 11:51:42 AM
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

 
Marcos Barbosa
 

País: Brasil
Estado: BA
Cidade: SALVADOR
Mensagens: 89
 Postado em: 20/1/2011 11:51:48 AM
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
#Código

SELECT Código, data, para, assunto, COUNT(*) 
FROM telemedicina
GROUP BY Código, data, para, assunto
HAVING COUNT(*) >1


 
LEONARDO XAVIER
 
 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 20/1/2011 12:09:40 PM

já tentou isso?


Citação:
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



 
Marcos Barbosa
 

País: Brasil
Estado: BA
Cidade: SALVADOR
Mensagens: 89
 Postado em: 20/1/2011 12:18:15 PM
Pessoal agradeço muito pela ajuda de todos, foram muito rápidos e atenciosos.
Consegui resolver da seguinte forma:
#Código

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

 
LEONARDO XAVIER
 
 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 20/1/2011 12:25:32 PM
nao esqueça de colocar este tópico como concluído. Isso mantem o fórum organizado. Abraços

 
Emerson
 
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 938
 Postado em: 20/1/2011 12:28:07 PM
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)

 

 
MARCO ANTONIO SALLES
 
 
 


País: Brasil
Estado: MG
Cidade: Muriae
Mensagens: 1679
 Postado em: 20/1/2011 12:33:26 PM

Citação:
Pessoal agradeço muito pela ajuda de todos, foram muito rápidos e atenciosos.
Consegui resolver da seguinte forma:
#Código

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
 
#Código
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

 
Marcos Barbosa
 

País: Brasil
Estado: BA
Cidade: SALVADOR
Mensagens: 89
 Postado em: 21/1/2011 9:50:39 AM
O bom é que ficará as duas formas aí para que quiser usar posteriormente.

Vlw.

 
Marcos Barbosa
 

País: Brasil
Estado: BA
Cidade: SALVADOR
Mensagens: 89
 Postado em: 21/1/2011 9:54:46 AM
Galera, onde posso indicar que o tópico está concluído ?


Citação:
O bom é que ficará as duas formas aí para que quiser usar posteriormente.

Vlw.

 
PJava
 

País: Brasil
Estado: SP
Cidade: Artur
Mensagens: 1424
 Postado em: 21/1/2011 10:04:50 AM
Já experimentou usar o distinct?

Select distinct.....

 
Wilson Lehapan Junior, vulgo Paulista...!!!
 
 
 


País: Brasil
Estado: RS
Cidade: Caxias do Sul
Mensagens: 1574
 Postado em: 21/1/2011 10:22:32 AM
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.

 
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03