Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/07/2011, 08:25
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Consulta MySQL entre dos valores

hola prodigic:

No me quedó claro cuál es el criterio que estás siguiendo para excluir los registros, si tomamos sólo los valores de alto y ancho tenemos lo siguiente:

Código:
ancho|alto
-------------
20|21
30|23
Ahora bien, para la primera pareja de valores (ancho = 20, alto = 30) tienes lo siguiente:

Código:
ancho - parámetro_ancho|alto - parámetro_alto
-------------
20-20 = 0|21-30 = 9
30-20 = 10|23-30 = 7 
por lo tanto la suma de las diferencias es menor para el primer registro (0 + 9 es menor que 10 + 7)

para la segunda pareja de valores (ancho = 28, alto = 20) tendríamos

Código:
ancho|alto
-------------
20-28=8|21-20=1
30-28=2|23-20=5 
por lo tanto, la suma de las diferencias es menor para el segundo registro (2 + 5 es menor que 8 + 1)

Si estoy en lo correcto y esto es lo que necesitas podrías obtenerlo más o menos así:

Código MySQL:
Ver original
  1. set @ancho = 50;
  2. set @alto = 40;
  3. select T1.* from TuTabla T1 inner join
  4. (
  5. select min(abs(ancho - @ancho) + abs(alto - @alto)) diferencia
  6. from TuTabla
  7. ) T2
  8. on T2.diferencia = abs(T1.ancho - @ancho) + abs(T1.alto - @alto);

Observa que utilizo el valor absoluto de las diferencias, para que no importe si es una diferencia positiva o negativa). Hay un caso que no mencionas cómo los tratarías y es si por ejemplo tienes los parámetros de ancho = 20 y alto = 20 y en tu tabla tuvieras los siguientes valores

Código:
ancho|alto
-------------
18|18
22|22
Aquí la diferencia total para ambos casos es 4, la consulta por lo tanto presentaría ambos casos.

Saludos y espero tus comentarios.
Leo.