首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP & MySQL :按不同类别显示某物的总和

问PHP & MySQL :按不同类别显示某物的总和
EN

Stack Overflow用户
提问于 2016-07-28 02:10:21
回答 1查看 723关注 0票数 2

你能帮帮我吗?如果你能提供一个解释的答案,我将更加感激,因为我想了解更多,我已经感谢这个社区了。对我的学习有很大帮助。但是唯一的答案对我来说已经足够好了,因为我真的需要这个的代码。

好了,现在我来定义这个问题。

现在,假设我有一个包含这些列的表。tbl_transaction -> id |参考|描述|值|类别|子类别

value是整型列类型,具有一定数量的值。比如100000或200000。

category和子category是VARCHAR类型的列,包含category和子category。

我想要的输出是它将显示基于其类别的价值总和。对于这个逻辑,我尝试了这个查询(它不是一个有效的mySQL代码标准,只是想显示一个逻辑)。

代码语言:javascript
复制
X = select DISTINCT category from tbl_transaction;
select SUM(value) from tbl_transaction WHERE category='X';

它实际上在MySQL上运行得很好。但是我也想把这个结果打印到PHP。问题是我不能将这个值与SUM和DISTINCT类别一起打印出来。我想要类似(在PHP输出/回显中)的内容:

类别|类别总和

A| 100000

B| 400000

C| 500000

我在php上尝试了这些代码,它只打印类别,而不是类别的总和。

代码语言:javascript
复制
$query1=mysql_query("select DISTINCT category from tbl_transaction");
echo "<table><tr><td>Category</td>";
while($query2=mysql_fetch_array($query1))
{
echo "<tr><td>".$query2['category']."</td></tr></table>";

$query3=mysql_query("select SUM(value) from tbl_transaction WHERE category ="(select DISTINCT category from tbl_transaction)"");
echo "<table><tr><td>SUM of Category</td>";
while($query4=mysql_fetch_array($query3))
{
echo "<tr><td>".$query4['value']."</td></tr></table>";
}

}

我尝试了几次,结果是null / resource id #7 / error。更重要的是,我实际上想要这样的东西。

A类

子类别A-子类别A的总金额

B类--B类合计金额

C子类别--C子类别的总金额

Total -类别A的总金额

B类

子类别A-子类别A的总金额

B类--B类合计金额

C子类别--C子类别的总金额

Total -B类的总金额

提前感谢你,Stackoverflow社区。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-28 02:38:21

您可以尝试这样一条SQL语句,将值GROUPing按列求和:

代码语言:javascript
复制
SELECT SUM(value) as Total_val, category FROM tbl_transaction GROUP BY category

你可以像这样在PHP中使用它:(我将使用PDO输入,因为mysql_命令现在已经过时了,不推荐使用)

代码语言:javascript
复制
//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
}

如果您正确地编辑它,这应该会起作用。如果你不确定如何使用PDO,它可能看起来有点复杂,我建议你看看它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38620282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档