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

buscar entre rangos

Estas en el tema de buscar entre rangos en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 18/11/2004, 06:54
 
Fecha de Ingreso: julio-2003
Mensajes: 53
Antigüedad: 20 años, 9 meses
Puntos: 0
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
  #2 (permalink)  
Antiguo 18/11/2004, 07:37
Avatar de orchabel  
Fecha de Ingreso: marzo-2002
Ubicación: Hundido en un rincón...
Mensajes: 401
Antigüedad: 22 años, 1 mes
Puntos: 1
Manejas el campo mes como varchar???... me parece que es lo menos recomendado. Sería mucho más sencillo si lo tuvieras numérico.
__________________
BugHunter II
"si quieres un mañana mejor, piensa en ser mejor para un mañana"
  #3 (permalink)  
Antiguo 18/11/2004, 07:41
 
Fecha de Ingreso: julio-2003
Mensajes: 53
Antigüedad: 20 años, 9 meses
Puntos: 0
si, en mi formulario esta con nombres (enero, febrero, etc,) para que fuera un campo numerico ya no podrí ir así?.
  #4 (permalink)  
Antiguo 18/11/2004, 09:48
Avatar de orchabel  
Fecha de Ingreso: marzo-2002
Ubicación: Hundido en un rincón...
Mensajes: 401
Antigüedad: 22 años, 1 mes
Puntos: 1
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!
__________________
BugHunter II
"si quieres un mañana mejor, piensa en ser mejor para un mañana"

Última edición por orchabel; 18/11/2004 a las 09:50
  #5 (permalink)  
Antiguo 18/11/2004, 10:01
 
Fecha de Ingreso: julio-2003
Mensajes: 53
Antigüedad: 20 años, 9 meses
Puntos: 0
Gracias...
  #6 (permalink)  
Antiguo 23/11/2004, 14:53
 
Fecha de Ingreso: julio-2003
Mensajes: 53
Antigüedad: 20 años, 9 meses
Puntos: 0
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>
  #7 (permalink)  
Antiguo 24/11/2004, 08:07
Avatar de orchabel  
Fecha de Ingreso: marzo-2002
Ubicación: Hundido en un rincón...
Mensajes: 401
Antigüedad: 22 años, 1 mes
Puntos: 1
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!
__________________
BugHunter II
"si quieres un mañana mejor, piensa en ser mejor para un mañana"
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 09:57.