Foros del Web » Programando para Internet » PHP »

Totalizar tabla por cada registro

Estas en el tema de Totalizar tabla por cada registro en el foro de PHP en Foros del Web. Hola a todos Por favor si alguien me puede ayudar con esto, Tengo la siguiente tabla en Mysql con los campos Ext, Duracion, Costo: Ext ...
  #1 (permalink)  
Antiguo 28/05/2008, 13:40
 
Fecha de Ingreso: mayo-2008
Mensajes: 9
Antigüedad: 11 años, 8 meses
Puntos: 0
Totalizar tabla por cada registro

Hola a todos

Por favor si alguien me puede ayudar con esto, Tengo la siguiente tabla en Mysql con los campos Ext, Duracion, Costo:

Ext Duracion Costo
236 5 150
206 1 30
222 5 150
220 2 60
223 3 90
236 2 60
236 2 60
210 4 120
223 3 90



Quisiera subtotalizar la Duracion y el costo por el campo Ext, pero conservando el detalle de cada registro:

Ext Duracion Costo
206 1 30
Total 1 30

210 4 120
Total 4 120

220 2 60
Total 2 60

222 5 150
Total 5 150

223 3 90
223 3 90
Total 6 180

236 5 150
236 2 60
236 2 60
Total 9 270


Con GROUP BY puedo totalizar los campos Duracion y Costo pero pierdo el detalle de cada uno de los registros:

<?php
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("llamadas", $con);

// Construct our join query

$query = "SELECT Ext, SUM(registro.duracion) AS Durtotal, SUM(costo) AS Costototal ".
"FROM registro ".
"GROUP BY Ext ORDER BY Ext";



$result = mysql_query($query) or die(mysql_error());



// Print out the contents of each row into a table
while($row = mysql_fetch_array($result)){
echo $row['Ext']. " - ". $row['Durtotal']. " - ". $row['Costototal'];
echo "<br />";
}
?>



Con el programa anterior obtengo esto:

Ext Durtotal Costototal
206 1 30
210 4 120
220 2 60
222 8 150
223 6 180
236 9 270


Por favor si alguien me puede dar una sugerencia de como subtotalizar y conservar el detalle de los registros

Última edición por lexer; 28/05/2008 a las 13:49
  #2 (permalink)  
Antiguo 28/05/2008, 14:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 2 meses
Puntos: 2654
Respuesta: Totalizar tabla por cada registro

Fíjate en el uso de WITH ROLLUP
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 02/06/2008, 12:17
 
Fecha de Ingreso: mayo-2008
Mensajes: 9
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Totalizar tabla por cada registro

Gracias por tu respuesta gnzsoloyo

Ahora estoy tratando mediante dos while anidados en PHP leer registros de Mysql y subtotalizar la duracion y costo por cada campo Ext. Para ello cree una segunda tabla llamada "estructura" donde solo se tiene un campo "Ext", mi idea ir leyendo mediante el primer While de la tabla estructura cada campo Ext para luego con el segundo While leer de la tabla registro, despues mediante un If ver si los campos registro.Ext = estructura. Ext, si son iguales ir sumando duracion y costo por cada Ext del primer While, una vez se termine el segundo while hacer Echo del total duracion y costo. Y buscar segund registro Ext con el primer While y asi sucesivamente.

Esta es la tabla "estructura":

Ext
0
206
208
210
220
222
223
236

Este es el programa:

<?php
$Durtotal=0;
$Costototal=0;
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("llamadas", $con);

//Primer Query Seleccionar extensiones de la estructura
$query = "SELECT estructura.Ext ".
"FROM estructura ".
"ORDER BY estructura.Ext ";

//Segundo Query buscar registros de llamadas
$query2 = "SELECT registro.Ext, registro.duracion, registro.costo ".
"FROM registro, estructura ".
"WHERE registro.Ext = estructura.Ext ORDER BY estructura.Ext ";

$result = mysql_query($query) or die(mysql_error());
$result2 = mysql_query($query2) or die(mysql_error());



// Primer While Seleccionar Ext de estructura
while($row = mysql_fetch_array($result)){
// Segundo While Ver si registro de Ext = Ext estructura
while($row = mysql_fetch_array($result2)){
//Si estructura.Ext = registro.Ext hacer echo e ir sumando duracion y costo
if ($row['registro.Ext'] == $row['estructura.Ext']) //$row['estructura.Ext']
{
echo $row['Ext']." - ". $row['costo']. " - ". $row['duracion'];
echo "<br />";
$Durtotal=$row['costo'] + $Durtotal;
$Costototal=$row['duracion'] + $Costototal;
}
}
echo " DuracionTotal ".$Durtotal. " CostoTotal ".$Costototal ;
echo "<br />";
//Inicializar Durtotal Costototal
$Durtotal=0;
$Costototal=0;
}
?>

Esta es la salida que me da el programa:

0 - 0 - 5
206 - 30 - 1
210 - 120 - 4
220 - 60 - 2
222 - 150 - 5
222 - 0 - 3
223 - 90 - 3
223 - 90 - 3
236 - 60 - 2
236 - 60 - 2
236 - 150 - 5
DuracionTotal 810 CostoTotal 35
DuracionTotal 0 CostoTotal 0
DuracionTotal 0 CostoTotal 0
DuracionTotal 0 CostoTotal 0
DuracionTotal 0 CostoTotal 0
DuracionTotal 0 CostoTotal 0
DuracionTotal 0 CostoTotal 0
DuracionTotal 0 CostoTotal 0

El programa no hace lo que pienso que deberia hacer.

Por favor si alguien me puede dar una luz
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 03:53.