Du kan prøve en sql-sætning som denne for at SUMME værdierne, der grupperes med en kolonne:
SELECT SUM(value) as Total_val, category FROM tbl_transaction GROUP BY category
Og du kan bruge dette i PHP sådan her:(Jeg skriver med PDO, fordi mysql_-kommandoer bliver gamle lige nu og anbefales ikke)
//Creating connection
$connection=new PDO("mysql:host=127.0.0.1;dbname=database_name","root","");
//Creating main query, fetching main categories
$query=$connection->prepare("SELECT category, SUM(value) as MAIN_CAT_TOTAL_VAL FROM tbl_transaction GROUP BY category");
$query->execute(); //executing query
foreach($query->fetchAll() as $q) //fetching results
{
echo "<b>".$q["category"].":<br/></b>"; //printing main category name
//creating second query which sums value column and groups by sub category
$query2=$connection->prepare("SELECT SUM(value) as TOTAL_VALUE, sub-category FROM tbl_transaction WHERE category=:p1 GROUP BY sub-category");
$query2->bindParam(":p1",$q["category"],PDO::PARAM_STR); //binding parameter to second query
$query2->execute(); //executing second query
foreach($query2->fetchAll() as $q2) //fetching the results
{
echo $q2["sub-category"]." -> ".$q2["TOTAL_VALUE"]."<br/>"; //printing the results
}
echo "total amount of category ".$q["category"]." = ".$q["MAIN_CAT_TOTAL_VAL"];
echo "<hr/>"; //cosmetics
}
Dette burde virke, hvis du redigerer det korrekt. Det kan se lidt kompliceret ud, hvis du ikke er sikker på, hvordan du bruger PDO. Jeg foreslår, at du tager et kig på det.