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

consulta multiple con campos con and (Y)

Estas en el tema de consulta multiple con campos con and (Y) en el foro de Mysql en Foros del Web. Hola a todos, estoy realizando una consulta un tanto complicada, mi consulta es la siguiente: "SELECT DATE_FORMAT(camp1, '%d-%m'), camp2, camp3, camp4, DATE_FORMAT(camp5, '%d-%m'), camp6, camp7, ...
  #1 (permalink)  
Antiguo 04/05/2008, 17:13
 
Fecha de Ingreso: enero-2008
Mensajes: 37
Antigüedad: 16 años, 4 meses
Puntos: 0
consulta multiple con campos con and (Y)

Hola a todos, estoy realizando una consulta un tanto complicada, mi consulta es la siguiente:

"SELECT DATE_FORMAT(camp1, '%d-%m'), camp2, camp3, camp4, DATE_FORMAT(camp5, '%d-%m'), camp6, camp7, camp8, DATE_FORMAT(camp9, '%d-%m'), camp10 FROM BD.TABLA WHERE DATE_FORMAT(camp1, '%d-%m-%Y')='$opera1' AND camp2='$opera2' AND camp3='$opera3' AND camp4='$opera4' AND DATE_FORMAT(camp5, '%d-%m-%Y')='$opera5' AND camp6='$opera6' ";

El caso es el siguiente, como algun campo lo deje en blanco, la consulta no me aroja ningun resultado, y yo quiero dejar algun campo en blanco, puesto que es para hacer un buscador.

Hay alguna forma de cuando algun campo se quede vacio, no cuente esa condicion, y siga con las demas?¿

PD.: Esto se realiza en php+mysql

Gracias.
  #2 (permalink)  
Antiguo 05/05/2008, 04:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: consulta multiple con campos con and (Y)

Puedes usar OR en vez de AND pero luego la busqueda será menos precisa o construir la sentencia Sql en funcion de los campos que tengas llenos.

$Sql="SELECT DATE_FORMAT(camp1, '%d-%m'), camp2, camp3, camp4, DATE_FORMAT(camp5, '%d-%m'), camp6, camp7, camp8, DATE_FORMAT(camp9, '%d-%m'), camp10 FROM BD.TABLA WHERE ";
if ($opera1!=""){
$Sql.="DATE_FORMAT(camp1, '%d-%m-%Y')='$opera1' ";
}
if ($opera1!="" && $opera2'!=""){
$Sql.="AND ";
}
if ($opera2!=""){
$Sql.="camp2='$opera2' ";

...


haz un echo de $Sql para ver que queda bien construida en tiempo de diseño y luego ejecuta la consulta.


(nos van a decir que no se puede poner codigo en este subforo...)

Quim
  #3 (permalink)  
Antiguo 06/05/2008, 02:44
 
Fecha de Ingreso: enero-2008
Mensajes: 37
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: consulta multiple con campos con and (Y)

Muchas gracia quim me a servido perfectamente, ahora el problema que tengo es que como rellene el primer campo(opera1) y el ultimo campo(opera6) por ejemplo, no me añade ningun (AND) y con lo cual sale un mensaje de error en la consulta.

Gracias.
  #4 (permalink)  
Antiguo 06/05/2008, 06:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: consulta multiple con campos con and (Y)

Tienes razón!!! Pero eso es resoluble a base de condiciones ... te puse un ejemplo incompleto y te dije que miraras si construia bien el SQL...

Este tambien es un ejemplo incompleto, en este caso creo que si lo desarrollas te dará lo que buscas pero asegurate con un echo del Sql. Si le das dos vueltas igual encuentras una manera mas simple de hacerlo, lo importante no es como sinó que tienes que construir el Sql en funcion de los datos que tengas....

$and=false;
$Sql="SELECT DATE_FORMAT(camp1, '%d-%m'), camp2, camp3, camp4, DATE_FORMAT(camp5, '%d-%m'), camp6, camp7, camp8, DATE_FORMAT(camp9, '%d-%m'), camp10 FROM BD.TABLA WHERE ";
if ($opera1!=""){
$Sql.="DATE_FORMAT(camp1, '%d-%m-%Y')='$opera1' ";
}
if ($opera1!="" && $opera2!=""){
$Sql.="AND ";
$Sql.="camp2='$opera2'";
}else{
if ($opera2!=""){
$Sql.="camp2='$opera2'";
}
}
if(($opera1!="" || $opera2!="") && $opera3!="") {
$Sql.="AND ";
$Sql.="camp3='$opera3'";
}else{
if ($opera3!=""){
$Sql.="camp3='$opera3'";
}
}

...


Quim
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:27.