好的,现在我将定义问题。
现在,让我说我有这些列的表。 tbl_transaction - > id | ref |描述|价值|类别|子类
value是一个整数列类型,具有一定的值。例如100000或200000。
category和subcategory是VARCHAR类型列,包含category和subcategory。
我想要的输出是它会根据类别显示值的总和。对于那个逻辑,我尝试了这个查询(它不是一个有效的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上试过这些代码,它只打印好类别,但不是类别的SUM。
$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 /资源id#7 /错误。更多的是,我真的想要这样的东西。
A类
子类别A - 子类别A的总金额
子类别B - 子类别B的总金额
子类别C - 子类别C的总量
总计 - A类总金额
B类
子类别A - 子类别A的总金额
子类别B - 子类别B的总金额
子类别C - 子类别C的总量
总计 - B类总金额
提前感谢Stackoverflow社区。
答案 0 :(得分:1)
您可以尝试使用这样的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,它看起来有点复杂,我建议你看看它。