eunito 0 Denunciar mensagem Publicado 13 de Maio de 2016 Olá a todos! Podem-me ajudar na seguinte situação? Tenho uma tabela que guarda um conjunto de pontos no país e um procedimento que devolve distancias entre dois pontos - dist(latA,lngA,latB,lngB) Campos da tabela A: IDponto INT, latitudeP float, longitudeP float, visitado bit; IDPonto # latP # lngP # visitado 1 # 1,123 # 1.456 # 1 2 # 2,123 # 3.456 # 0 3 # 4,123 # 1.456 # 1 4 # 7,123 # 1.456 # 1 se fizer um select para obter apenas os IDPonto obtenho o 1,2,3 e 4 e neste exemplo as ligações possíveis são 1-2, 1-3, 1-4, 2-3, 2-4 e 3-4. Como é que consigo obter uma tabela com seguintes colunas: Origem # Destino # distancia (km) 1 # 2 # 5 1 # 3 # 50 1 # 4 # 15 2 # 3 # 3 2 # 4 # 6 3 # 4 # 1 ? Obrigado! Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
PaisNeto 2 Denunciar mensagem Publicado 14 de Maio de 2016 Boa tarde, eu vou te apresentar uma solução, mas não foi feita no mysql, tenta adaptar para o mysql. Criei uma tabela e passei os dados que apresentas em cima. DECLARE CURSOR ROTAS IS SELECT IDPONTO,LATITUDE,LONGITUDE FROM PONTO ORDER BY IDPONTO ASC; -- CURSOR ROTAS1 IS SELECT IDPONTO,LATITUDE,LONGITUDE FROM PONTO ORDER BY IDPONTO ASC; BEGIN -- FOR P IN ROTAS LOOP FOR R IN ROTAS1 LOOP IF P.IDPONTO < R.IDPONTO THEN --CORRES O TEU PROCEDIMENTO PARA IR BUSCAR A DISTANCIA --SE OS DADOS FOREM PARA INSERIR NUMA TABELA FAZES O INSERT AQUI DBMS_OUTPUT.PUT_LINE('ORIGEM '||P.IDPONTO||' DESTINO '||R.IDPONTO); END IF; END LOOP; END LOOP; -- END; O resultado do procedimento foi este ORIGEM 1 DESTINO 2 ORIGEM 1 DESTINO 3 ORIGEM 1 DESTINO 4 ORIGEM 2 DESTINO 3 ORIGEM 2 DESTINO 4 ORIGEM 3 DESTINO 4 Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
HappyHippyHippo 1177 Denunciar mensagem Publicado 14 de Maio de 2016 existe uma "brincadeira" muito fácil para obter a lista que pretendes: select A.id, B.id from tabelaA as A, tabelaB as B where B.id > A.id order by A.id, B.id a distância tens de ser tu a enfiar porque não dás informação necessária ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
KTachyon 277 Denunciar mensagem Publicado 15 de Maio de 2016 Se utilizares postgres com postGIS, podes utilizar as funções GIS para te calcular as distâncias entre coordenadas. Isto para além de te permitir armazenar as coordenadas numa só coluna e pesquisar por raio. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
HappyHippyHippo 1177 Denunciar mensagem Publicado 15 de Maio de 2016 Se utilizares postgres com postGIS, podes utilizar as funções GIS para te calcular as distâncias entre coordenadas. Isto para além de te permitir armazenar as coordenadas numa só coluna e pesquisar por raio. mysql também tem funcionalidades para isso, mas nunca usei ... http://dev.mysql.com/doc/refman/5.7/en/spatial-extensions.html 1 IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites