entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

-6votos

consulta, subconsulta ,mysql, alguna idea

Hola gente
parametros (id prodcutos y fecha)
intento obtener si un o varios productos estan dentro del rango con los eventos que esten relacionados esos productos... si cada producto esta dentro del rango de su evento esta dentro del rango... todo ok
si en unos de esos productos uno no se encuentra dentro del rango de su evento relacionando de acuerdo a la fecha dada
entonces esta mal ...
ej.
prodcut
id , name
10 producto01
11 producto02
evento_product
product_id event_id
10 1
11 2
evento
id, nombre, fecha_inicio, fecha_final
1 verano 2014-02-20 2014-02-31
2 invierno 2014-03-20 2014-03-31
---- entonces en un array envio los id de los productos(10,11) con la fecha 2014-02-25
---- en ese caso me votaria error por que el id 11 su evento relacionado no se encuentra 2014-02-25 entre las fechas de su evento relacionado....
thanks all!!

1voto

Leonardo-Tadei comentado

Hola,

la verdad es que no se entiende del todo bien lo que estás planteando...

Por el ejemplo que das, bastaría que un producto no cumpla con el clriterio para que el proceso devuelva falso, y solo si todos los productos cumplen con el criterio sería verdadero. Es así?

Qué querés decir con que "en ese caso me votaria error" ? A qué te refirís con "votar" en este contecto?

1 Respuesta

4votos

carlossevi Puntos63580

En primer lugar decirte que la pregunta está expuesta de forma bastante poco clara. El enunciado de la pregunta no contiene ninguna pregunta y la explicación del contenido es bastante liosa. Intenta ser más conciso y utilizar un poco mejor los signos de puntuación.

Creo que deberías sacar una lista de productos activos para una fecha de la siguiente manera:

SELECT ep.productid
FROM eventoproduct as ep
JOIN evento as e ON e.id = ep.eventid
WHERE e.fecha_inicio <= '2014-02-25 00:00:00' 
AND e.fecha_final >= '2014-02-25 23:59:59' 

Con esa consulta puedes sacar una lista de productos que tienen eventos activos y a partir de ahí realizar tus comprobaciones a nivel del código de la aplicación.

Si en la misma consulta ya quieres incluir los productos seleccionados y quieres evitarte una comparación desde el código puedes hacer:

SELECT id FROM product WHERE
id IN (10, 11)
AND id NOT IN (SELECT ep.productid
FROM eventoproduct as ep
JOIN evento as e ON e.id = ep.eventid
WHERE e.fecha_inicio <= '2014-02-25 00:00:00' 
AND e.fecha_final >= '2014-02-25 23:59:59' )

La consulta anterior te devolverá una lista de los productos seleccionados que no cumplen la condición de tener un evento activo. Si la lista está vacía significa todos los productos seleccionados los cumplen.

1voto

franklyn77 comentado

gracias por responder leonardo-tadei , carlossevi

posteo el query que me dio la solución

SELECT id FROM product WHERE
    id IN (10, 11)
    AND id NOT IN (SELECT ep.productid
    FROM eventoproduct as ep
    JOIN evento as e ON e.id = ep.eventid
    WHERE e.fecha_inicio <= '2014-02-25 00:00:00'
    AND e.fecha_final >= '2014-02-25 23:59:59' )

Saludos!!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta