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

Consulta MySQL entre dos valores

Estas en el tema de Consulta MySQL entre dos valores en el foro de Mysql en Foros del Web. Hola buenas tardes, ¿Qué tal todo? Espero que muy bien. Bueno, el tema.. Resulta que tengo una tabla en una BBDD, con varias columnas: ID,id_producto,ancho,alto,precio ...
  #1 (permalink)  
Antiguo 04/07/2011, 07:19
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
Consulta MySQL entre dos valores

Hola buenas tardes,
¿Qué tal todo? Espero que muy bien.

Bueno, el tema..
Resulta que tengo una tabla en una BBDD, con varias columnas:

ID,id_producto,ancho,alto,precio

Un ejemplo de los valores serían los siguientes:

1,10,20,21,10
1,10,30,23,21

Necesito que si por ejemplo un cliente pone de ancho 20 y de alto 30 , saque el primer registro, y si pone de ancho 28 y de alto 20 saque el segundo registro.

Es decir, el que más se aproxime a los valores correspondientes, ese es el correcto.

Ante todo, muchas gracias por vuestra ayuda.
Saludos :)
  #2 (permalink)  
Antiguo 04/07/2011, 08:25
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 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.
  #3 (permalink)  
Antiguo 04/07/2011, 10:21
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Consulta MySQL entre dos valores

Hola

Ante todo, muchas gracias por tu rápida respuesta.
Te comento, estoy programándolo con una consulta MySQL.

El problema principal es el siguiente:

Tengo una BBDD de una tienda on-line donde se venden productos a medida (ancho y alto).
Obviamente, el dueño de la tienda no va a meter todos los posibles anchos en la BBDD (sería una locura), por lo que solo mete determinados anchos y altos, con determinados precios.

Por ejemplo, para 20 cm de ancho x 20 cm de alto, el producto cuesta 10 Euros.
Para 30 cm de ancho x 35 cm de alto, el producto cuesta 20 Euros.

El tema está en que necesito hacer una consulta, para que cuando el cliente en la web ponga por ejemplo: 21 cm de ancho y 30 cm de alto, coja el producto de 10 Euros. Si por ejemplo pone 29 cm de ancho, coja el de 20 Euros, y así sucesivamente.

Vamos, que si no encuentra ningún registro, coja el que más se asemeje.
¿Cómo lo ves?

Muchas gracias de nuevo
Un saludo :)
  #4 (permalink)  
Antiguo 04/07/2011, 11:17
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consulta MySQL entre dos valores

Hola de nuevo prodigic:

¿Probaste la consulta que puse en el post anterior?, para los datos que colocas esta consulta debería de funcionar, pero en tu nuevo post no haces ninguna referencia a si te sirvió o no la consulta, es más, tal pareciera que ni siquiera la probaste

Si fuera el caso de que la consulta no te funciona entonces deberías de darnos algún registro donde esté fallando el filtro, para ver si se puede aplicar alguna corrección o si de plano hay que hacer otra consulta diferente.

Saludos
Leo.

Etiquetas: Ninguno
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 03:27.