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

Consulta de precios usando IN

Estas en el tema de Consulta de precios usando IN en el foro de Mysql en Foros del Web. Buen día, Tengo la siguiente consulta Código PHP: $yt  =  "$y1,$y2,$y3,$y4,$y5,$y6" ; $consulta =  "SELECT * FROM precios WHERE pre1 IN ('$yt') or pre2 IN('$yt') or pre3 IN('$yt') or pre4 IN('$yt') or preant IN('$yt') or prenuevo IN('$yt') ORDER BY id DESC" ; $resultados  =  mysql_query ( $consulta ) or die( mysql_error ());  Donde ...
  #1 (permalink)  
Antiguo 24/03/2010, 11:41
 
Fecha de Ingreso: septiembre-2007
Mensajes: 15
Antigüedad: 16 años, 7 meses
Puntos: 0
Consulta de precios usando IN

Buen día,

Tengo la siguiente consulta

Código PHP:
$yt "$y1,$y2,$y3,$y4,$y5,$y6";
$consulta"SELECT * FROM precios WHERE pre1 IN ('$yt') or pre2 IN('$yt') or pre3 IN('$yt') or pre4 IN('$yt') or preant IN('$yt') or prenuevo IN('$yt') ORDER BY id DESC";
$resultados mysql_query($consulta) or die(mysql_error()); 
Donde $y1...$yn son precios que obtengo de un formulario.
pre1...pren son los campos que contienen precios.

Lo que quiero es que al consultar en la base de datos me envié los registros que contengan al menos 3 de esos precios (mayor igual). Con la consulta anterior me envía los registros que tengan como mínimo un precio de los que se enviaron en la consulta.

Agradezco su atención.
  #2 (permalink)  
Antiguo 25/03/2010, 06:21
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta de precios usando IN

Analiza lo que pides... que el registro cumpla que

o precio uno este dentro de (...) o precio 2 este dentro de (...) o ....

luego es lógico que te responda con los que cumplen con una de las "o", esdecir que uno de los precios sea igual a uno de los numeros entre parentesis

Tu quieres que :

Cita:
...los registros que contengan al menos 3 de esos precios (mayor igual)...

La cosa será complicada seguro que no puedes buscar otro camino....


Se me ocurre un condicional que de uno o cero si el precio esta dentro del parentesis y luego sumar el resultado y si da 3 o mayor que 3 listar el registro...

...
WHERE (if(pre1 IN ($yt),1,0)+if(pre2 IN($yt),1,0)+if(pre3 IN($yt),1,0)+if(pre4 IN($yt),1,0)+if(preant IN($yt),1,0)+if(prenuevo IN($yt),1,0))>=3
...

algo así ... no lo he probado pero por ahí irá...

Quim
  #3 (permalink)  
Antiguo 25/03/2010, 10:02
 
Fecha de Ingreso: septiembre-2007
Mensajes: 15
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Consulta de precios usando IN

Mucha razón Quimm.

Lo que originalmente buscaba era:
Cita:
Lo que quiero es que al consultar en la base de datos me envié los registros que contengan al menos 3 de esos precios (mayor igual).
La Consulta salió después gracias a alguien que se tomo el tiempo para tratar de ayudar.

Acabo de probar el código que incluiste y funciona perfectamente para lo que necesito.

Te lo agradezco bastante

Saludos

Etiquetas: precios
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 18:23.