MySQL - problema condicion consulta

 
Vista:

problema condicion consulta

Publicado por salencko (4 intervenciones) el 27/03/2008 17:56:28
Hola, explico mi caso...quiero mostrar una consulta de la base de datos para unas fechas introducidas en un formulario.

$sql.=" SELECT i.id_irt, ii.nombre_publico, date_format(f.fecha_ini, '%d/%m') AS fecha_ini , c.concellos";
$sql.=",if (date_format(f.fecha_inicial, '%Y%m%d') >= date_format(STR_TO_DATE('".$_GET["fecha_inicial"]."','%d/%m/%Y'), '%Y%m%d'),date_format(f.fecha_ini, '%Y%m%d'),XXXX) as fechaOrden";
$sql.=" FROM c_finde AS f ";
$sql.=" ORDER BY fechaOrden";

Quiero saber como mostrar solo los registros de la base de datos cuya fecha es posterior a la fecha introducida en el formulario. he probado dejando sin cubrir el lugar que ocupan las X para que no me devuelva esos registros que no cumplen la condicion, pero me da un error en la consulta....No se que comando escribir para que no devuelva nada a fechaOrden, porque si pongo ''(vacio) interpreta eso como una cadena y loss registros que no quiero mostrar aparecen primeros asi q nada.si hay una manera posible de arreglar esa consulta pos guay, si no es posible estoy abierto a sugerncias sobre nuevas formas de hacer la consulta....
ciao
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema condicion consulta

Publicado por Jose Ramon Castelo (12 intervenciones) el 27/03/2008 19:57:49
Hola,

Prueba con:

$sql.=" SELECT i.id_irt, ii.nombre_publico, date_format(f.fecha_ini, '%d/%m') AS fecha_ini , c.concellos";
$sql.=" FROM c_finde AS f ";
$sql.=" WHERE f.fecha_ini >=STR_TO_DATE('".$_GET["fecha_inicial"]."','%d/%m/%Y')"
$sql.=" ORDER BY fechaOrden";

Creo que así debería funcionar.

Espero haber ayudado.

Un saludo desde A Coruña (España).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema condicion consulta

Publicado por salencko (4 intervenciones) el 28/03/2008 09:29:16
voy a probar asi, pero el caso es que tengo la curiosidad de saber si es posible o no dejar la instruccion que se ejecutaria en caso de que no se cumpla la condicion del if vacia, vamos que no haga nada en caso de que no se cumpla la condicion....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema condicion consulta

Publicado por salencko (4 intervenciones) el 28/03/2008 09:53:58
he probado tu solucion y tengo que meter na condicion mas porque si no no muestra nigun registro cuando no se introducen fechas...cuando deberia listar todos los registros
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema condicion consulta

Publicado por Jose Ramon Castelo (12 intervenciones) el 28/03/2008 10:21:08
Se me había olvidado el caso de que viniera la fecha en blanco, yo creo que la cosa quedaría más o menos así (me parece que estás usando PHP:

$sql.=" SELECT i.id_irt, ii.nombre_publico, date_format(f.fecha_ini, '%d/%m') AS fecha_ini , c.concellos";
$sql.=" FROM c_finde AS f ";
if(isset($_GET["fecha_inicial"])
{
$sql.=" WHERE f.fecha_ini >=STR_TO_DATE('".$_GET["fecha_inicial"]."','%d/%m/%Y')"
}
$sql.=" ORDER BY fechaOrden";

En general, lo que estás haciendo es que solo pones la condición WHERE cuando fecha_inicial traiga algún valor, en caso contrario al no haber WHERE sacaría todos los registros.

Espero que te sirva.

Un saludo desde A Coruña (España).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema condicion consulta

Publicado por Jose Ramon Castelo (12 intervenciones) el 28/03/2008 10:32:05
Hay un error en el texto que he escrito antes:

$sql.=" SELECT i.id_irt, ii.nombre_publico, date_format(f.fecha_ini, '%d/%m') AS fecha_ini , c.concellos";
$sql.=" FROM c_finde AS f ";
if(isset($_GET["fecha_inicial"]) || $_GET["fecha_inicial"]=="")
{
$sql.=" WHERE f.fecha_ini >=STR_TO_DATE('".$_GET["fecha_inicial"]."','%d/%m/%Y')"
}
$sql.=" ORDER BY fechaOrden";

Así debería valer.

Espero que te sirva.

Un saludo desde A Coruña (España).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema condicion consulta

Publicado por salencko (4 intervenciones) el 28/03/2008 12:47:15
si, es en php. ya lo consegui arreglar aunque no utilice exactamente lo que decias...pero al final es lo mismo:

if (($_GET["fecha_inicial"] == "") && ($_GET["fecha_final"] != "")) {
{
where ....

}

tuve que poner cuatro if porque tambien tenia fecha final para introducir en el formulario, el caso es que por fin me funciona correctamente....Era un problema de planteamiento, por querer utilizar la estructura que estaba puesta de antes y que no habia hecho yo, por lo tanto tuve algunos problemas para entenderlo....

Gracias y hasta otra....

Saludos desde Pontevedra
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar