你能帮帮我吗?如果你能提供一个解释的答案,我将更加感激,因为我想了解更多,我已经感谢这个社区了。对我的学习有很大帮助。但是唯一的答案对我来说已经足够好了,因为我真的需要这个的代码。
好了,现在我来定义这个问题。
现在,假设我有一个包含这些列的表。tbl_transaction -> id |参考|描述|值|类别|子类别
value是整型列类型,具有一定数量的值。比如100000或200000。
category和子category是VARCHAR类型的列,包含category和子category。
我想要的输出是它将显示基于其类别的价值总和。对于这个逻辑,我尝试了这个查询(它不是一个有效的mySQL代码标准,只是想显示一个逻辑)。
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上尝试了这些代码,它只打印类别,而不是类别的总和。
$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社区。
发布于 2016-07-28 02:38:21
您可以尝试这样一条SQL语句,将值GROUPing按列求和:
SELECT SUM(value) as Total_val, category FROM tbl_transaction GROUP BY category你可以像这样在PHP中使用它:(我将使用PDO输入,因为mysql_命令现在已经过时了,不推荐使用)
//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,它可能看起来有点复杂,我建议你看看它。
https://stackoverflow.com/questions/38620282
复制相似问题