Ir para conteúdo

POWERED BY:

Arquivado

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

Davidmg

Select DISTINCT

Recommended Posts

Estou fazendo um select DISTINCT onde quero mostrar todos os dados não deixando repetir os registros que estiverem placas iguais, estou fazendo assim:

 

Set rs1 = MyConn.Execute("Select DISTINCT Placa, * From Pedido Where Tipo = 'Entrega' and Evair = 'L' and Leonel = 'L' and Logistica = 'L' and Cancelado = 'N' and Faturamento = 'N' Order by Id DESC;")

Mais não dá certo, ele mostra os registros certinhos, mais mostra tb registros que contem placas iguais.

 

Tem algum outro jeito de fazer?

 

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Experimenta tirar o * e colocar o nome dos outros campo que você precisa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Experimenta tirar o * e colocar o nome dos outros campo que você precisa

Fiz, e mesmo assim ele mostra 2 registros que tem a placa igual, mto estranho isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Davidmg, o select distinct não vai retornar linhas que forem completamente iguais(todas as colunas iguais), se a placa for igual mas alguma outra coluna do select for diferente ele irá retornar as 2 linhas por exemplo.Mesmo assim existe a possibilidade de existir espaços depois da placa(se for um campo texto), então só aparentemente seriam iguais mas para o banco de dados o espaço já seria um sinal de diferença, nesse caso seria legal tentar normalizar as informações para trazer uma informação verídica.Olha isso e posta o resultado :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Davidmg, o select distinct não vai retornar linhas que forem completamente iguais(todas as colunas iguais), se a placa for igual mas alguma outra coluna do select for diferente ele irá retornar as 2 linhas por exemplo.Mesmo assim existe a possibilidade de existir espaços depois da placa(se for um campo texto), então só aparentemente seriam iguais mas para o banco de dados o espaço já seria um sinal de diferença, nesse caso seria legal tentar normalizar as informações para trazer uma informação verídica.Olha isso e posta o resultado :D

Pior que já olhei, coloquei até o tipo de campo como Numero pq a placa é pelo id, que no meu caso tem 2 registros com placa = 8 e queria mostrar apenas um, e mesmo assim nao dá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta os registros que estão sendo puxados...todos os campos utilizaados no select

Set rs1 = MyConn.Execute("Select DISTINCT Placa, id, data, diae, pgpetro, obs From Pedido Where Tipo = 'Entrega' and Evair = 'L' and Leonel = 'L' and Logistica = 'L' and Cancelado = 'N' and Faturamento = 'N' Order by Id DESC;")
Ele mostra 3 registros...onde 2 registros são com a placa 8 que eu gostaria que ele mostrasse apenas 1 desses 2.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

os campos "Placa, id, data, diae, pgpetro, obs" tem de ser completamente iguais.se um deles for diferente o distinct vai puxar os dois registros como o pita já havia dito.e pelo visto o id deve de ser distinto entao ele puxa os dois.

Compartilhar este post


Link para o post
Compartilhar em outros sites

os campos "Placa, id, data, diae, pgpetro, obs" tem de ser completamente iguais.se um deles for diferente o distinct vai puxar os dois registros como o pita já havia dito.e pelo visto o id deve de ser distinto entao ele puxa os dois.

Então, completamente iguais, são só as placas....mais se coloco o DISTINCT só pelas placas ele dá erro na hora de mostrar os registros, pq eeu exibo a data, diae, obs.....entendeu.....e eu queria exibir esses registros sem repetir os que tivessem a mesma placa....kicoisa hein.

Compartilhar este post


Link para o post
Compartilhar em outros sites

so me veio a cabeca gambis.mas ele seria péssimo conforme o tempo.

Mais fala ae, que gambis seriam? quem sabe pode ajudar....eheheh.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara já tentou usar o Group By????

 

Acho que pode dar certo heim!?

 

 

uma tentativa:

 

Set rs1 = MyConn.Execute("Select placa, id, data, diae, pgpetro, obs From Pedido Where Tipo = 'Entrega' and Evair = 'L' and Leonel = 'L' and Logistica = 'L' and Cancelado = 'N' and Faturamento = 'N' GROUP BY placa Order by Id DESC;")

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara já tentou usar o Group By????Acho que pode dar certo heim!?uma tentativa:

Set rs1 = MyConn.Execute("Select placa, id, data, diae, pgpetro, obs From Pedido Where Tipo = 'Entrega' and Evair = 'L' and Leonel = 'L' and Logistica = 'L' and Cancelado = 'N' and Faturamento = 'N' GROUP BY placa Order by Id DESC;")
Nada tb, a coisa é feia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Explica melhor como você quer esse resultado.Seria algo como exibir apenas a primeira ocorrencia de um valor no campo placa, independentemente do que haja nos outros campos. E depois que achou um simplesmente ignora os outros registros com o mesmo valor no campo placa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Explica melhor como você quer esse resultado.Seria algo como exibir apenas a primeira ocorrencia de um valor no campo placa, independentemente do que haja nos outros campos. E depois que achou um simplesmente ignora os outros registros com o mesmo valor no campo placa?

Isso, se por exemplo tiver 2 registro com a placa 8, quero que mostre apenas um registro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Davidmg,Não tem solução.A menos é claro que você faça um Script imenso para inibir os registros duplicados.

Vixi, chick então.Vou tentar fazer de outro jeito.Valew teacher, e obrigado à todos que ajudaram. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

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.