Título: Consulta con un numero variable de condiciones Publicado por: santi810 en 22 Agosto 2014, 22:58 pm Buenos dias.
Empiezo presentando mi tabla: Código: -- Estructura de tabla para la tabla `extras` Desde una aplicacion web estoy intentando hacer una SELECT filtrando por 3 variables ( usuario, local y año) En teoria seria lo siguiente: Código: select * from extras WHERE YEAR(fecha) = '2014' AND pago_asoc = '*' AND local = 'Casa' AND usuario = 'Santi' El problema es que no siempre se dan los 3 parametros desde la aplicacion. Por ejemplo a veces necesito conocer las extras de Santi en 2014 en TODOS LOS LOCALES. Habia pensado en esto: Código: select * from extras WHERE YEAR(fecha) = '2014' AND pago_asoc = '*' AND local = '*' AND usuario = 'Santi' Si conocen algun tipo de forma para arreglar esto os lo agradezco. Estoy intentando arreglarlo desde el apartado de php pero desde ahi lo veo mas complicado. Gracias de antemano. Título: Re: Consulta con un numero variable de condiciones Publicado por: madara1412 en 22 Agosto 2014, 23:07 pm Código: select * from extras WHERE YEAR(fecha) = '2014' AND pago_asoc = '*' AND usuario = 'Santi' como nesesitas saver todos los locales lo ideal es no poner condicion al quitar la condicion de local se asume que seran todos que cumplan las condiciones como 2014 y santi Título: Re: Consulta con un numero variable de condiciones Publicado por: santi810 en 22 Agosto 2014, 23:50 pm era un ejemplo, otras veces necesitare saber las extras de todos los usuarios en local=casa durante el 2014, y otras las de santi en casa etc
Título: Re: Consulta con un numero variable de condiciones Publicado por: Carloswaldo en 28 Agosto 2014, 22:03 pm ¿De qué gestor de base de datos estamos hablando? Voy a asumir MySQL.
Podrías intentar hacer algo como esto, por ejemplo: Código
Eso te retornará todos los registros en el caso de que @local no esté definido (sea null) y aplicará el filtro en caso de que sí esté definido. También puedes simplificarlo un poco con COALESCE Código
Siguiendo esa lógica puedes construir el resto de la consulta. Título: Re: Consulta con un numero variable de condiciones Publicado por: JorgeEMX en 31 Agosto 2014, 15:45 pm Si conocen algun tipo de forma para arreglar esto os lo agradezco. Estoy intentando arreglarlo desde el apartado de php pero desde ahi lo veo mas complicado. Ps más bien, a mi me parece una tontera hacer un consulta muy general para estos casos. Los mejor sería sacar una consulta a medida desde PHP. Si el campo local siempre lleva un tipo de local, que no sea vacío, sería (como te comentan arriba): Código
Tal vez hasta te interese agruparlo: Código
Lo mismo aplica para la otra variable. El problema de hacer esto, es que a nivel de código deberás identificar que sentencia llamar. Título: Re: Consulta con un numero variable de condiciones Publicado por: Carloswaldo en 31 Agosto 2014, 15:50 pm El problema con eso es que el código en php va a ser muy extenso porque tendrá que hacer una consulta por cada situación (una para cuando no hayan todos los datos, otra cuando falte fecha, otra cuando falte fecha y local, otra cuando falte solo local, etc...)
Ya depende de lo que le venga a ser más práctico. |