sql >> Database >  >> RDS >> Mysql

PHP &MySQL:SOM van iets tonen, ingedeeld op verschillende categorie

U kunt een SQL-instructie als deze proberen om de waarden GROUPING per kolom op te tellen:

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

En je kunt dit in PHP als volgt gebruiken:(Ik typ met PDO omdat mysql_-commando's nu oud worden en niet worden aanbevolen)

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

Dit zou moeten werken als je het goed bewerkt. Het kan er een beetje ingewikkeld uitzien als je niet zeker weet hoe je PDO moet gebruiken, ik raad je aan er eens naar te kijken.




  1. C# SQLServer haalt resultaten op en plaatst ze in een .csv-formaat

  2. SQL Server BIT-gegevenstype – Ultieme gids

  3. MySQL UPSERT zonder ON DUPLICATE KEY

  4. LIKE gebruiken in een Oracle IN-clausule