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

Problema condicionales MYsql

Estas en el tema de Problema condicionales MYsql en el foro de Mysql en Foros del Web. Estimados, tengo un problemita con una consulta que hago con PHP a la base de datos. Para que lo entiedan estoy seleccionando todos los registros ...
  #1 (permalink)  
Antiguo 29/04/2013, 07:54
 
Fecha de Ingreso: mayo-2011
Mensajes: 78
Antigüedad: 12 años, 11 meses
Puntos: 0
Problema condicionales MYsql

Estimados,

tengo un problemita con una consulta que hago con PHP a la base de datos.

Para que lo entiedan estoy seleccionando todos los registros de una tabla que cumplan con 2 requisitos:

a) que esten dentro de un rango de fechas
b) que cumplan con una caracteristica ( esta se selecciona de un <select> y se guarda en la BD al momento de cargar el registro)

El problema que tengo es que la consulta queda asi:

Código MySQL:
Ver original
  1. SELECT * FROM operaciones
  2. WHERE fechacarga BETWEEN '2013-01-01 ' AND '2013-04-19'
  3. AND tiposervicio = 'TERRESTRE' OR tiposervicio = 'TERRESTRE + SEGURO'
  4. OR tiposervicio = 'TERRESTRE + INGRESO A PUERTO' OR tiposervicio = 'IMPORTACION'
  5. OR tiposervicio = 'IMPORTACION + SEGURO' OR tiposervicio = 'AEREO'
  6. ORDER BY numeroop DESC

y el resulado que me arroja no es lo que lo quiero porque toma el between y el primer and como la primer condicion y toma todo el resto de los "OR" como condicionales independientes.

Para que se entienda lo que yo quiero voy a separar las 2 condiciones que se tienen que cumplir con parentesis ( esto solo para que me entiendan) y necesitaria si pueden orientarme sobre como lograrlo.
Código MySQL:
Ver original
  1. SELECT * FROM operaciones
  2. WHERE (fechacarga BETWEEN '2013-01-01 ' AND '2013-04-19')
  3. AND (tiposervicio = 'TERRESTRE' OR tiposervicio = 'TERRESTRE + SEGURO'
  4. OR tiposervicio = 'TERRESTRE + INGRESO A PUERTO' OR tiposervicio = 'IMPORTACION'
  5. OR tiposervicio = 'IMPORTACION + SEGURO' OR tiposervicio = 'AEREO')
  6. ORDER BY numeroop DESC

Desde ya les agradezco muchisimo la ayuda!! saludoss

Última edición por gnzsoloyo; 29/04/2013 a las 08:27 Razón: Mal etiquetado. Usar Higlight "MySQL" o "SQL"
  #2 (permalink)  
Antiguo 29/04/2013, 07:56
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema condicionales MYsql

Utiliza ( y ) para agrupar las codiciones, consulta la sintaxis de SQl. Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 29/04/2013, 08:18
 
Fecha de Ingreso: mayo-2011
Mensajes: 78
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Problema condicionales MYsql

Repara2, muchas gracias por tu ayuda, pero no logro encontrar lo que me decis, si te referis a usar AND para agrupar las condiciones es lo que hago, el problema es que en la segunda condicion hay varios OR que hacen que se siga separando la condicion en muchas mas, yo solo quiero que existan 2 condiciones ( en la segunda haya opciones entre varios parametros, por eso los OR)

Gracias
  #4 (permalink)  
Antiguo 29/04/2013, 08:34
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema condicionales MYsql

http://dev.mysql.com/doc/refman/5.0/es/parentheses.html
__________________
Fere libenter homines, id quod volunt, credunt.
  #5 (permalink)  
Antiguo 29/04/2013, 08:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema condicionales MYsql

Lo que planteaste en el segundo ejemplo es ya lo correcto, porque para que las condiciones incluyan el rango de fecha y alguna de las otras condiciones, obligatoriamente las opcionales deben ir entre paréntesis. Es lo mismo que cualquier operación de lógica proposicional (el WHERE se basa en ella).
Yo simplificaría un poco la sintaxis para que no te complique la vida:
Código MySQL:
Ver original
  1. SELECT   *
  2.   FROM   operaciones
  3.  WHERE   (fechacarga BETWEEN '2013-01-01 ' AND '2013-04-19')
  4.          AND (tiposervicio IN('TERRESTRE', 'TERRESTRE + SEGURO', 'TERRESTRE + INGRESO A PUERTO', 'IMPORTACION', 'IMPORTACION + SEGURO', 'AEREO')
  5. ORDER BY numeroop DESC
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 29/04/2013, 09:17
 
Fecha de Ingreso: mayo-2011
Mensajes: 78
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Problema condicionales MYsql

Muchas gracias a los 2!! ya esta resuelto!! saludossss

Etiquetas: condicionales, php, registro, registros, select, tabla
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 13:11.