listar dados com nome duplicados
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
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
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
Curtidas 0
Respostas
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
having count(*) > 1
group by campoA,CampoB,assunto é so um palpite
GOSTEI 0
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
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
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
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
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
20/01/2011
Pessoal agradeço muito pela ajuda de todos, foram muito rápidos e atenciosos.
Consegui resolver da seguinte forma:
Tópido resolvido
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
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
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)
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
20/01/2011
Pessoal agradeço muito pela ajuda de todos, foram muito rápidos e atenciosos.
Consegui resolver da seguinte forma:
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
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
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
20/01/2011
O bom é que ficará as duas formas aí para que quiser usar posteriormente.
Vlw.
Vlw.
GOSTEI 0
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.
Vlw.
GOSTEI 0
Pjava
20/01/2011
Já experimentou usar o distinct?
Select distinct.....
Select distinct.....
GOSTEI 0
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.
Espero ter colaborado.
GOSTEI 0