Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP &MySQL :SUMME von etwas anzeigen, klassifiziert nach unterschiedlicher Kategorie

Sie können eine SQL-Anweisung wie diese versuchen, um die Werte zu summieren, die nach einer Spalte gruppiert werden:

SELECT SUM(value) as Total_val, category FROM tbl_transaction GROUP BY category

Und Sie können dies in PHP wie folgt verwenden:(Ich tippe mit PDO, weil mysql_-Befehle gerade alt werden und nicht empfohlen werden)

//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
}

Dies sollte funktionieren, wenn Sie es richtig bearbeiten. Es kann ein wenig kompliziert aussehen, wenn Sie sich nicht sicher sind, wie man PDO verwendet. Ich schlage vor, Sie sehen es sich einmal an.