DISTINCT EM UMA INSTRUCAO SQL

HIDDEN 18/12/2009 14:11:02
#330025
Olá pessoal. Criei uma instrução SQL, onde desejo omitir códigos repetidos. Para isso, utilizo a cláusula DISTINCT. Mas não está funcionando. Não da erro, mas os dados não são filtrados. Eis a instrução:

 

SQLSource = [Ô]SELECT DISTINCT procedimentos.Codigo, procedimentos.Reg, procedimentos.Nome, procedimentos_vrpo.IDP, procedimentos_vrpo.IDTP, procedimentos_vrpo.Ok AS POk, (procedimentos_vrpo.Valor * [Ô] & IDValor & [Ô]) AS PValor, procedimentos_vrpo.Comissao, procedimentos_vrpo.ComissaoV, procedimentos_especialidades.IDE FROM procedimentos, procedimentos_vrpo,procedimentos_especialidades WHERE procedimentos.Codigo=procedimentos_vrpo.IDP AND procedimentos_especialidades.IDP=procedimentos.Codigo AND procedimentos_vrpo.IDTP=[Ô] & IDTabela & [Ô] [Ô] & Ordem



Na instrução acima, desejo que o procedimentos.Codigo seja único. Como eu disse, não da erro, mas recebo procedimentos.Codigo repetidos. Mais cedo ou mais tarde detectarei o problema. Mas peço a ajuda de quem conseguir enxergar o problema antes.
MADMAX 18/12/2009 16:32:52
#330047
Da uma verificada pois deve ter sim algum campo diferente pois se tiver 1 campo <> dos registros repetidos que são visualizados ele ja não agrupara tudo.
FBUR 18/12/2009 17:05:05
#330052
Cria registros duplicados de propósito e testa.

é como o colega MADMAX falou: Se tiver alguma diferença em campo, os dados são retornados. O DISTINCT só funciona se os valores forem exatamente iguais.

[ ] 's
RICART 19/12/2009 10:09:30
#330063
HIDDEN,
O que eu consigo perceber é que vc talvez não esteja conseguindo fazer a instrução da forma correta. Parece que as chaves estrangeiras não estão relacionadas corretamente com os campos correspondentes.
Posta a definição das tabelas para que possamos lhe ajudar.
Aparentemente, as tabelas: procedimentos, procedimentos_vrpo,procedimentos_especialidades estão relacionadas pelos camos incorretos.
A mehor prática é vc utilizar INNER JOIN e LEFT OU RIGHT JOIN para garantir que trará todos os registros da tabela principal e os registros coincidentes das tabelas de apoio.
Consulte sobre essas expressões na net que tem muito exemplo.
HIDDEN 22/12/2009 13:03:09
#330279
Pelo tipo de consulta quer fiz, não terei linhas identicas. E sei que por isso não conseguirei o [Ô]filtro[Ô] desejado. Por isso levantei a questão, pois certamente há codificação para realizar o que eu quero.

RICART, fiz uma análise e as chaves estão relacionadas corretamente. E claro que INNER JOIN é mais eficaz. Ilustrei o código acima para facilitar. Bem de toda forma estou perto da solução. Assim que conseguir, posto aqui.
GNCNET 22/12/2009 13:08:49
#330281
Seu sistema está sendo desenvolvido para qual área?
MARCOSLING 22/12/2009 13:20:59
#330286
se vc rodar sem distinct retorna alguma coisa?
HIDDEN 23/12/2009 10:00:58
#330365
é um sistema para uma faculdade de odontologia.

se vc rodar sem distinct retorna alguma coisa?

Retorna todos os dados, sem eliminar procedimentos.Codigo repetidos.
MADMAX 23/12/2009 16:50:25
#330397
HIDDEN pega o resultado do select com distinct salva ele em xls ou outro formato ..anexa ele aqui .. deixa dar uma analisada nos dados ai posso te falar o porque de ele não estar agrupando ..... acho que so assim para saber o porque de não estar fazendo ... pois como disse distinct não tem segredo .. a não ser que todos os campo do select tem de ser iguais se não ele não agrupa .
Tópico encerrado , respostas não são mais permitidas