Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

¿ORDER BY proximidad se puede?

Estas en el tema de ¿ORDER BY proximidad se puede? en el foro de Mysql en Foros del Web. Hola a todos! Estuve buscando en el manual de MySQL y el foro oficial y no puedo encontrar como hacer para ordenar un SELECT por ...
  #1 (permalink)  
Antiguo 25/09/2009, 16:31
 
Fecha de Ingreso: febrero-2007
Mensajes: 309
Antigüedad: 17 años, 1 mes
Puntos: 16
Pregunta ¿ORDER BY proximidad se puede?

Hola a todos!

Estuve buscando en el manual de MySQL y el foro oficial y no puedo encontrar como hacer para ordenar un SELECT por proximidad de un valor.
Por ejemplo:

Tengo una tabla con los campos: USUARIO, PUNTO_X, PUNTO_Y y quiero seleccionar todos los usuarios pero ordenandolos por cercania de PUNTO_X=400 y PUNTO_Y=350.

O sea... vamos a el uso práctico... la cordenada ganadora es PUNTO_X=400 y PUNTO_Y=350 y quiero saber los usuarios que estuvieron más cerca.

¿Se puede hacer eso?
__________________
Responder encuestas
  #2 (permalink)  
Antiguo 25/09/2009, 16:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿ORDER BY proximidad se puede?

Hace unos meses hubo en el foro una pregunta similar, respecto a la cual se discutió mucho, y no hubo un acuerdo formal de cómo lograrlo.
Yo hoy propondría una solución usando tablas espaciales. es una forma de crear valores dentro de un espacio imaginario, y las funciones que existen de la extension espacial si pueden establecer la cercanía entre dos puntos dados.
Habría que analizarlo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 28/09/2009, 13:15
 
Fecha de Ingreso: febrero-2007
Mensajes: 309
Antigüedad: 17 años, 1 mes
Puntos: 16
Respuesta: ¿ORDER BY proximidad se puede?

Lo pude solucionar usando aritmetica. Dejo el SQL por si a alguien en algun futuro le sirve:

[SQL]
select
usuarioId,
x,
y,
abs(x-578)+abs(y-384) as distancia
from jugadas
order by distancia asc
[/SQL]
__________________
Responder encuestas
  #4 (permalink)  
Antiguo 28/09/2009, 13:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿ORDER BY proximidad se puede?

Buena idea y buena propuesta.

El otro día me quedé pensando en el tema y me salia una idea similar.
Me alegra que hayas encontrado el camino y que lo compartas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:17.