Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   consulta multiple con campos con and (Y) (http://www.forosdelweb.com/f86/consulta-multiple-con-campos-con-582853/)

jovi_javi 04/05/2008 17:13

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.

quimfv 05/05/2008 04:13

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

jovi_javi 06/05/2008 02:44

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.

quimfv 06/05/2008 06:12

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


La zona horaria es GMT -6. Ahora son las 20:25.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.