sql >> Databasteknik >  >> RDS >> Mysql

PHP &MySQL :Visa SUMMA av något, klassificerad efter distinkt kategori

Du kan prova en sql-sats som denna för att SUMMA värdena som grupperas med en kolumn:

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

Och du kan använda detta i PHP så här:(Jag skriver med PDO eftersom mysql_-kommandon börjar bli gamla just nu och rekommenderas inte)

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

Detta borde fungera om du redigerar det ordentligt. Det kan se lite komplicerat ut om du inte är säker på hur man använder PDO, jag föreslår att du tar en titt på det.




  1. Hur kan jag optimera MySQL-frågan för uppdatering?

  2. Ska jag använda PDO PARAM_LOB eller PARAM_STR för MySQL TEXT-typ?

  3. hur du gör din data horisontell

  4. MySQL får saknade ID från tabellen