Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Bases de Datos General (http://www.forosdelweb.com/f21/)
-   -   buscar entre rangos (http://www.forosdelweb.com/f21/buscar-entre-rangos-248026/)

catrin 18/11/2004 06:54

buscar entre rangos
 
hola.
Alguien podria ayudarme con esto:
Tengo una tabla mysql con 4 campos año mes gasto consumo,
quiero realizar una consulta en que pueda obtener la suma de gasto acumulado desde enero a un mes x (variable) según año a elección.
Como podría hacerlos?????????.
Estaba tratando con algo así, pero no me resulta.

$resul=mysql_db_query("gestion","select consumo_h , gasto_h from agua where año='$b' and mes between 'Enero and '$a''");

Espero su ayuda.
Gracias

orchabel 18/11/2004 07:37

Manejas el campo mes como varchar???... me parece que es lo menos recomendado. Sería mucho más sencillo si lo tuvieras numérico.

catrin 18/11/2004 07:41

si, en mi formulario esta con nombres (enero, febrero, etc,) para que fuera un campo numerico ya no podrí ir así?.

orchabel 18/11/2004 09:48

es mejor que utilizaras los meses como campo numerico asi colocarías en ves del nombre el numero del més

enero 1
febrero 2
.....
diciembre 12

es parte de la normalización de tablas. En ese caso el query que colocaste te funcionaría de este modo

$result=mysql_db_query("gestion","select consumo_h , gasto_h from agua where año='$b' and mes between 0 and $a");

donde $a sería el numero del mes.

en el formulario si lo tienes como una lista, puedes dejar el nombre para que se vea el mes y el valor numérico que es el que se guardaría.

<select mes>
<option value=1>Enero</option>
<option value=2>Febrero</option>
<option value=3>Marzo</option>
<option value=4>Abril</option>
.....
<option value=12>Diciembre</option>
</select>

saludos!

catrin 18/11/2004 10:01

Gracias...

catrin 23/11/2004 14:53

aún no puedo.....
 
Aun tengo el problema que no puedo obtener los datos requeridos, necesito obtener los datos para un periodo de tiempo año 2004 entre enero y mes elegido y lo mismo para el año anterios, año 2003. Mi problema ahora surge en que para el año 2003 me entrega los valores sin problema, pero el para el año 2004 me repite siempre el valor de enero.
Alguna idea:


<?
$a=$HTTP_POST_VARS['mesap'];
$b=$HTTP_POST_VARS['añosap'];
$c=$b-1;
{echo "$a";}
{echo "$b";}
{echo "$c";}
//coneccion a la base de datos
mysql_connect("localhost","root","root");
//ejecutamos sentencia sql
$resul=mysql_db_query("gestion","select consumo_h , gasto_h from agua where mes between 1 and $a and año=$b");
$resul2=mysql_db_query("gestion","select consumo_h , gasto_h from agua where mes between 1 and $a and año=$c");
?>
<table align ="center" border="2" bordercolor="blue">
<tr>
<tr><th colspan=4><B>Acumulado al mes de :<?php echo $a;?> </B></tr></th>
<tr><th>Item </th>
<th> Año <?php echo $b;?></th>
<th> Año <?php echo $c;?> </th>
<th>variación</th> </tr>
<?
//Mostramos los registros
While ( $row=mysql_fetch_array($resul))
While ($row2=mysql_fetch_array($resul2))
{
echo '<tr><td>Consumo</td>';
echo '<td>'.number_format($row[consumo_h]).'</td>';
echo '<td>'.number_format($row2[consumo_h]).'</td>';
echo '<td>'.$v.'</td><tr>';
echo '<tr><td>Gasto</td>';
echo '<td>'.number_format($row[gasto_h]).'</td>';
echo '<td>'.number_format($row2[gasto_h]).'</td>';
echo '<td>'.$v.'</td><tr>';
}
mysql_free_result($resul)
?>
</table>

orchabel 24/11/2004 08:07

tu proble no es de consulta.. es de impresión. Te recomendaría que no utilizaras esos ciclos anidados... sino que primero tomaras los valores con ciclos independientes, los almacenares en un array y luego si los imprimieras.

saludos!


La zona horaria es GMT -6. Ahora son las 00:55.

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