PHP&;MySQL:按不同类别求和值
之前谢谢你对我的案子感兴趣。简而言之,我想告诉大家,我想知道MySQL表中的值是否可以通过MySQL查询来计算,或者是否需要PHP代码来计算。我不知道该怎么编码 案例:PHP&;MySQL:按不同类别求和值,php,mysql,Php,Mysql,之前谢谢你对我的案子感兴趣。简而言之,我想告诉大家,我想知道MySQL表中的值是否可以通过MySQL查询来计算,或者是否需要PHP代码来计算。我不知道该怎么编码 案例: Number / value, result of SUMMED UP table calculation (math). 我有tbl_事务,其格式如下: id | ref | description | value | date | category | sub_category 值是INT类型的列,例如,它包含1000
Number / value, result of SUMMED UP table calculation (math).
我有tbl_事务,其格式如下:
id | ref | description | value | date | category | sub_category
值是INT类型的列,例如,它包含10000、20000等
假设我想对值列求和,但按不同的类别
例如,它的工作原理如下:
category A SUM minus(-) category B SUM plus(+) category C SUM = Result of Counted SUM
实验:
Number / value, result of SUMMED UP table calculation (math).
我试过这样的方法,显然不管用,但我试着在这里展示我解决一个案例的逻辑
SELECT SUM(value) as MAIN_CAT_TOTAL_VAL
FROM tbl_transaction
WHERE monthTransaction LIKE '$newmonthminusone%' ONE
, ONE+3
期望的学习:
Number / value, result of SUMMED UP table calculation (math).
我想知道如何将mySQL查询打印到PHP中。如果可能的话,我需要代码。有人说mysql_uu函数不再是最新的,不应该被使用。但是我不知道如何使用新函数来取代mysql_uu函数,比如PDO之类的。我真的需要解释。我从代码和案例中学习,至少我是这样适应的。所以代码会对我有很大帮助
所需输出:
Number / value, result of SUMMED UP table calculation (math).
我完全不知道如何编码和启动。我被困了好几个小时。我真的需要帮助。太多了。将一个类别的值相加
SELECT category, SUM(value) FROM tbl_transaction GROUP BY category
我希望您有足够的知识来扩展此查询,以包含更多字段或过滤掉总和中不希望包含的内容。对一个类别的值进行总和
SELECT category, SUM(value) FROM tbl_transaction GROUP BY category
我希望您有足够的知识来扩展此查询,以包含更多字段或过滤掉总和中不希望包含的内容。mysqli_*几乎是mysql_*的替代品,是学习PDO的良好过渡,因为您可以使用(大部分)未经修改的现有代码,向面向对象的方法过渡,并在了解它们时准备好语句 也就是说,您可能在查询中查找的内容如下:
SELECT
category,
SUM(value) AS MAIN_CAT_TOTAL_VAL
FROM tbl_transaction
WHERE monthTransaction LIKE '$newmonthminusone%' AS ONE
GROUP BY category;
然后您就可以像这样使用它:
$link = mysqli_connect("localhost", "dbuser", "dbpassword", "dbname");
$query = mysqli_query($link, $queryStringFromAbove);
$total = 0;
while($row = mysqli_fetch_assoc($query)) {
switch($row['category']) {
case "A":
case "C":
$total += $row['MAIN_CAT_TOTAL_VAL'];
break;
case "B":
$total -= $row['MAIN_CAT_TOTAL_VAL'];
break;
}
}
echo $total;
编辑:很难准确地说出你的加减条件,但是
switch()
块应该足够灵活,可以根据你的需要进行定制。mysqli_*几乎是mysql_*的替代品,是学习PDO的一个很好的过渡,因为你可以使用(大部分)未经修改的现有代码,向面向对象的方法过渡,并在了解它们时准备好语句
也就是说,您可能在查询中查找的内容如下:
SELECT
category,
SUM(value) AS MAIN_CAT_TOTAL_VAL
FROM tbl_transaction
WHERE monthTransaction LIKE '$newmonthminusone%' AS ONE
GROUP BY category;
然后您就可以像这样使用它:
$link = mysqli_connect("localhost", "dbuser", "dbpassword", "dbname");
$query = mysqli_query($link, $queryStringFromAbove);
$total = 0;
while($row = mysqli_fetch_assoc($query)) {
switch($row['category']) {
case "A":
case "C":
$total += $row['MAIN_CAT_TOTAL_VAL'];
break;
case "B":
$total -= $row['MAIN_CAT_TOTAL_VAL'];
break;
}
}
echo $total;
编辑:很难准确地说出加减的条件,但是
开关()
块应该足够灵活,可以根据您的需要进行定制。@SuperJer为mysqli提供了解决方案。如果您想要mysql解决方案:
// Create connection to your server
$handle=mysql_connect('your_server_name','your_server_password');
// Check that connection was successful
if($handle == FALSE)
die("No connection available: ".mysql_error());
// Select your database
$db=mysql_select_db('your_database_name');
if($db == FALSE)
die("Unable to select DB: ".mysql_error());
// Formulate query
$query = SELECT category, SUM(value) AS categoryTotal FROM tbl_transaction GROUP BY category;
// Run query
$result = mysql_query($query, $handle);
// Store result
$total = 0;
while($row=mysql_fetch_assoc($result)){
switch($row['category']) {
case "A":
case "C":
$total += $row['MAIN_CAT_TOTAL_VAL'];
break;
case "B":
$total -= $row['MAIN_CAT_TOTAL_VAL'];
break;
}
}
我希望这有助于SuperJer为mysqli提供解决方案。如果您想要mysql解决方案:
// Create connection to your server
$handle=mysql_connect('your_server_name','your_server_password');
// Check that connection was successful
if($handle == FALSE)
die("No connection available: ".mysql_error());
// Select your database
$db=mysql_select_db('your_database_name');
if($db == FALSE)
die("Unable to select DB: ".mysql_error());
// Formulate query
$query = SELECT category, SUM(value) AS categoryTotal FROM tbl_transaction GROUP BY category;
// Run query
$result = mysql_query($query, $handle);
// Store result
$total = 0;
while($row=mysql_fetch_assoc($result)){
switch($row['category']) {
case "A":
case "C":
$total += $row['MAIN_CAT_TOTAL_VAL'];
break;
case "B":
$total -= $row['MAIN_CAT_TOTAL_VAL'];
break;
}
}
我希望这有帮助您的表结构似乎没有“monthTransaction”列,但您的示例查询有。您要查找的查询是
SELECT category,SUM(value)AS categoryTotal FROM tbl_transaction GROUP BY category代码>。如果你熟悉不推荐的mysql\uuucode>函数,试着使用msqli\ucode>等价函数如果你不能用mysql实现这一点,在PHP中使用while循环会很容易,但是我想有人会有一个mysql的答案。我假设结果是真的,但我仍然需要将其打印到PHP中,你对此有什么想法吗?(php)。根据我读取此查询的逻辑,此mysql查询可能是正确的。@TheonendonlyChemistryBlob实际上我更喜欢mysql和PHP查询,因为它需要以PHoppossible replicate打印出来,表结构的可能副本似乎没有“monthTransaction”列,但您的示例查询有。您要查找的查询是SELECT category,SUM(value)AS categoryTotal FROM tbl_transaction GROUP BY category代码>。如果你熟悉不推荐的mysql\uuucode>函数,试着使用msqli\ucode>等价函数如果你不能用mysql实现这一点,在PHP中使用while循环会很容易,但是我想有人会有一个mysql的答案。我假设结果是真的,但我仍然需要将其打印到PHP中,你对此有什么想法吗?(php)。根据我读取此查询的逻辑,此mysql查询可能是正确的。@TheonendonlyChemistryBlob实际上我更喜欢mysql和PHP查询,因为它需要以可能的副本打印出来。我确实尝试过此方法,但实际上我想对求和值进行数学(计算)。例如:A表的和为1000,B表的和为2000。然后我想计算两者的总和,结果是-1000。这就是我想要的,我试了好几个小时,但还是想不出来。谢谢你的回答。所以我假设类别
正在存储这个A、B和C表名称?你的数学永远是A-B+C?是的,就像那样。顺便说一句,数学并不总是A-B+C。事实上,我想要不同类别的总和,然后像A-B+C一样对它们进行计数。我目前正在制作上个月交易总数和本月交易总数的计数函数,诸如此类。谢谢您上次的编辑,我目前正在尝试实现代码。但它返回到0值。但无论如何谢谢你,我真的很感谢你的帮助。你必须确保案例“
与你的类别
列中的值完全匹配。没有看到表中的一个片段,我不得不猜测。我确实尝试过这个,但实际上我想对求和值进行数学计算。例如:A表的和为1000,B表的和为2000。然后我想计算两者的总和,结果是-1000。这就是我想要的,我试了好几个小时,但还是想不出来。谢谢你的回答,所以我假设