Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/08/2013, 18:11
Avatar de guardarmicorreo
guardarmicorreo
 
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: ¿Como puedo mejorar y simplificar esta consulta?

Cita:
Iniciado por isabelramirezmontoya Ver Mensaje
Chicos me dan una manito por favor si es posible

Tengo una base de datos en la cual realizo consultas o querys. Para hacer las consultas tengo un formulario con 2 select para filtrar la consulta.

Los select son color_prenda (rojo,azul,amarillo o todos) y size color_prenda (grande, medio, pequeño o todos)

Me da como resultado 4 consultas diferentes asi

Código HTML:
Ver original
  1. si color_prenda = todos AND size = todas
  2. SELECT * FROM articulos
  3.  
  4. sino color_prenda = todos AND size <> todas
  5. SELECT * FROM articulos WHERE size = size_prenda
  6.  
  7. sino color_prenda <> todos AND size = todas
  8. SELECT * FROM articulos WHERE color = color_prenda
  9.  
  10. sino color_prenda <> todos AND size <> todas
  11. SELECT * FROM articulos WHERE color = color_prenda AND size = size_prenda
  12.  
  13. fin-sino

¿Puedo simplificar y dinamizar este pequeño script en una sola consulta?

Lo pregunto por que necesito hacer uno con 6 select y no quiero hacer 36 consultas diferentes

Gracias
no postees código sql en el foro de php. a mi también me ha ocurrido pero se va aprendiendo a ir directo a los problemas. en tu caso hubiera bastado preguntar cómo hacer una consulta dinámica.

sí, puedes y debes hacerla dinámica.

para ello lo único que necesitas es algo parecido a esto

Código PHP:
Ver original
  1. //con OR IS NOT NULL le indicas a mysql que según el where es o el valor de la
  2.  
  3. //variable y si esta no coincide con ninguno entonces que escoja según el segundo caso
  4.  
  5. //si ninguno coincide entonces te devolverá todos los resultados que contengan algo excepto la nada, null
  6.  
  7. SELECT * FROM articulos WHERE color = ".$color_prenda." OR color IS NOT NULL AND size = ".$boton_size_prenda." OR size IS NOT NULL";

ya a partir de ahí tienes que ver cómo dar valor a esas variables, que supongo que esas consultas las tendrás dentro de una función o un método de una clase.

intentalo por tu cuenta.
__________________
Ayúdame a hacerlo por mi mismo.