Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP&;MySQL:按不同类别求和值_Php_Mysql - Fatal编程技术网

PHP&;MySQL:按不同类别求和值

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

之前谢谢你对我的案子感兴趣。简而言之,我想告诉大家,我想知道MySQL表中的值是否可以通过MySQL查询来计算,或者是否需要PHP代码来计算。我不知道该怎么编码

案例:

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。这就是我想要的,我试了好几个小时,但还是想不出来。谢谢你的回答,所以我假设