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

Convinar AND y OR en mysql

Estas en el tema de Convinar AND y OR en mysql en el foro de Mysql en Foros del Web. Buenos dias gente, tenia un problema en una consulta MySQL y no pude encontrar la solucion y supongo que seguro ustedes la tienen tengo la ...
  #1 (permalink)  
Antiguo 05/04/2012, 09:34
Avatar de Agusx1211  
Fecha de Ingreso: octubre-2009
Ubicación: Buenos Aires
Mensajes: 33
Antigüedad: 15 años, 1 mes
Puntos: 2
Pregunta Convinar AND y OR en mysql

Buenos dias gente, tenia un problema en una consulta MySQL y no pude encontrar la solucion y supongo que seguro ustedes la tienen

tengo la siguiente consulta

SELECT * FROM `eventos` WHERE id_usuario = 1 and time_fin < 7000 and time_fin > 400 and `id_casilla` =

como veran la consulta esta incompleta, porque necesito que me entregue todos los resultados donde id_casilla sea 2, 3 y 5 (por ejemplo) pero no se como poner varios valores, se me ocurrio hacer

SELECT * FROM `eventos` WHERE id_usuario = 1 and time_fin < 7000 and time_fin > 400 and `id_casilla` = 2 or `id_casilla` = 3 or `id_casilla` = 5

pero de esa forma si "id_casilla" es 5 me devuelve el resultado, sin comprobar que time_fin <7000 ni nada de eso

como podria hacer para que funcione la consulta?
  #2 (permalink)  
Antiguo 05/04/2012, 09:40
Avatar de Agusx1211  
Fecha de Ingreso: octubre-2009
Ubicación: Buenos Aires
Mensajes: 33
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Convinar AND y OR en mysql

por ahora se me ocurrio solucionarlo usando esto:

(SELECT * FROM `eventos` WHERE id_usuario = 1 and time_fin < 7000 and time_fin > 300 and `id_casilla` = 2)
UNION
(SELECT * FROM `eventos` WHERE id_usuario = 1 and time_fin < 7000 and time_fin > 300 and `id_casilla` = 3)
UNION
(SELECT * FROM `eventos` WHERE id_usuario = 1 and time_fin < 7000 and time_fin > 300 and `id_casilla` = 5)

pero me parece que es un poco bestia (no estoy acostumbrado a trabajar con Mysql xd).

Tienen una alternativa mas eficiente para lo mismo? o una consulta mas corta?
  #3 (permalink)  
Antiguo 05/04/2012, 10:49
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años, 7 meses
Puntos: 131
Respuesta: Convinar AND y OR en mysql

Intenta con esto
Código MySQL:
Ver original
  1. select * from eventos where id_usuario = 1 and time_fin between 7000 and 300 and id_casilla in (2,3,5);
  #4 (permalink)  
Antiguo 05/04/2012, 11:03
Avatar de Agusx1211  
Fecha de Ingreso: octubre-2009
Ubicación: Buenos Aires
Mensajes: 33
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Convinar AND y OR en mysql

Cita:
Iniciado por hackjose Ver Mensaje
Intenta con esto
Código MySQL:
Ver original
  1. select * from eventos where id_usuario = 1 and time_fin between 7000 and 300 and id_casilla in (2,3,5);
me devuelve solo los que contienen 2

como si pusiera id_casilla = 2

gracias igual
  #5 (permalink)  
Antiguo 05/04/2012, 11:24
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años, 7 meses
Puntos: 131
Respuesta: Convinar AND y OR en mysql

Esto:

(SELECT * FROM `eventos` WHERE id_usuario = 1 and time_fin < 7000 and time_fin > 300 and `id_casilla` = 2)
UNION
(SELECT * FROM `eventos` WHERE id_usuario = 1 and time_fin < 7000 and time_fin > 300 and `id_casilla` = 3)
UNION
(SELECT * FROM `eventos` WHERE id_usuario = 1 and time_fin < 7000 and time_fin > 300 and `id_casilla` = 5)

debe ser equivalente a esto:(si fue asi?)

SELECT * FROM eventos WHERE id_usuario = 1 AND time_fin BETWEEN 7000 AND 300 AND id_casilla IN (2,3,5);
  #6 (permalink)  
Antiguo 05/04/2012, 11:29
Avatar de Agusx1211  
Fecha de Ingreso: octubre-2009
Ubicación: Buenos Aires
Mensajes: 33
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Convinar AND y OR en mysql

La verdad no entiendo que pasa, porque mi codigo (que uso UNION como un bestia), me entrega los resultados, y el otro me dice 0 resultados O.o
  #7 (permalink)  
Antiguo 05/04/2012, 11:38
Avatar de Agusx1211  
Fecha de Ingreso: octubre-2009
Ubicación: Buenos Aires
Mensajes: 33
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Convinar AND y OR en mysql

SELECT * FROM `eventos` WHERE id_usuario = 1 and time_fin < 7000 and time_fin > 300 AND id_casilla IN (2,3,5)

Funciona perfecto, el problema esta en el between
  #8 (permalink)  
Antiguo 05/04/2012, 11:50
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años, 7 meses
Puntos: 131
Respuesta: Convinar AND y OR en mysql

Lo bueno es que ya quedo, tal vez con unos perentesis en el between se arregla la cosa.
Salu2
  #9 (permalink)  
Antiguo 05/04/2012, 12:43
Avatar de Agusx1211  
Fecha de Ingreso: octubre-2009
Ubicación: Buenos Aires
Mensajes: 33
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Convinar AND y OR en mysql

karma para vos, gracias :D

Etiquetas: incompleta, resultados
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 12:22.