SQL Ordenar pontos por distancia.
05/11/2014
0
Alguém tem uma ideia de como posso fazer a ordenação destes pontos por menor distancia, utilizando selects SQL. Já tentei algumas formas mas sem resultado.
Na tabela exemplo eu tenho 5 pontos e a distancia entre os mesmos.
Desejo ordenar os pontos sabendo que o ponto inicial é o de numero 5.
Seguindo visualmente os registros podemos ver que a sequencia será 5, 1, 3, 2.
PT1 PT2 DISTANCIA
1 2 2.624
1 3 0.541
1 4 1.698
1 5 0.540
2 1 2.624
2 3 2.094
2 4 4.268
2 5 3.122
3 1 0.541
3 2 2.094
3 4 2.219
3 5 1.072
4 1 1.698
4 2 4.268
4 3 2.219
4 5 1.233
5 1 0.540
5 2 3.122
5 3 1.072
5 4 1.233
Obrigado,
Gleidson Santos
Posts
05/11/2014
Marisiana Battistella
Inclua a clásula ORDER BY no SELECT que retorna esses dados e ordene pelo campo distância e ordem crescente.
ORDER BY DISTANCIA ASC
06/11/2014
Gleidson Santos
PT1 PT2 DISTANCIA
5 1 0.540
1 3 0.541
3 2 2.094
2 4 4.268
06/11/2014
Marisiana Battistella
Seria + ou - assim:
select PT1, PT2, DISTANCIA from tabela group by PT1, PT2, DISTANCIA order by DISTANCIA asc
06/11/2014
Gleidson Santos
Necessito que ele retorne estes valores, conforme exemplo.
PT1 PT2 DISTANCIA
5 1 0.540
1 3 0.541
3 2 2.094
2 4 4.268
Usei agrupamento por MIN(DIS), mas não retorna o que preciso.
Talvez eu tenha que utilizar procedure.
Obrigado pela atenção.
06/11/2014
Marisiana Battistella
Eu entendi o que vc precisa fazer, mas não tenho como dizer como deve ser o SQL apenas olhando o retorno que vc quer obter, sem conhecer a estrutura das tabelas, as FKs, etc.
Se quiser postar o código que vc criou, pode ser que eu consiga te auxiliar de uma forma mais correta e mais precisa.
07/11/2014
Gleidson Santos
A tabela que deve ser trabalhada é justamente a que informei no inicio e ela tem apenas os campos PT1, PT2 e DISTANCIA.
Na verdade esta é uma view resultante de um cross join de uma tabela com pontos e coordenadas, onde apliquei uma função para retornar a distancia entre os pontos cadastrados.
Com esta view eu precisaria ordenar, partindo de um ponto especifico, no caso do exemplo é o numero 5.
Acredito que em selects não seja possível fazer.
Na imagem inserida mostro como deveria ser ordenado.
[img:descricao=Exemplo da ordenação dos pontos.]http://arquivo.devmedia.com.br/forum/imagem/362905-20141107-173701.jpg[/img]
08/11/2014
Marisiana Battistella
Acredito que seja melhor você utilizar um procedimento pra fazer isso e nem vá ser necessário criar a view.
Você poderia incluir uma coluna de nome ORDEM na tabela para identificar a ordem de classificação dos pontos, definindo a posição deles, pode ser 1, 2, 3, 4... ou então, A, B,C...
Assim, caso venha a existir mais pontos, ou menos pontos, você apenas alterará a ordem de classificação deles.
ORDEM PT1 PT2 DISTANCIA 1 5 1 0.540 2 1 3 0.541 3 3 2 2.094 4 2 4 4.268
Clique aqui para fazer login e interagir na Comunidade :)