繁体   English   中英

求和(属性“ field1” +属性“ field2”),然后对所有结果行进行求和

[英]Sum (Attribute “field1” + Attribute “field2”) and then Sum All the Result's Rows

标题说的不多,所以我将在这里解释。

我有桌子

+------------+---------+------+-----+---------+----------------+
| Field      | Type    | Null | Key | Default | Extra          |
+------------+---------+------+-----+---------+----------------+
| id         | int(11) | NO   | PRI | NULL    | auto_increment |
| field1     | int(11) | NO   |     | NULL    |                |
| field2     | int(11) | YES  |     | NULL    |                |
+------------+---------+------+-----+---------+----------------+

并显示结果,

$sql = "SELECT field1, field2 FROM tbl WHERE field1 = '$id' OR field2 = '$id'";

它以长字段= id的形式列出结果。

直到这部分,一切正常。 我需要对那些返回的行的结果求和。 $ id是从用户单击的预定义列表生成的动态值。

我想要的是求和field1 + field2并在更改id时也正确过滤它们。

我的结果现在看起来像这样,

id    |   sum( field1+field2)
----------------------------
1     |    10
50    |    22
13    |    80

我想总结一下(10 + 22 + 80)。 如前所述,显示的ID或行数是动态的。 根据用户选择进行更改。

如果要多行,每行总计,请使用:

$sql = "SELECT (field1+field2) as the_row_total FROM tbl WHERE field1 = '$id' OR field2 = '$id'";

如果要总体总计,请使用:

$sql = "SELECT SUM(field1+field2) as the_grand_total FROM tbl WHERE field1 = '$id' OR field2 = '$id'";

注意:我假设您已经清理了$id 如果没有,那你就站在地雷上

假设我们有一个名为tbl的表:

id    |    field1    |    field2
--------------------------------
1     |    6         |    4
50    |    10        |    12
13    |    41        |    39

有关您的问题的SQL查询:

$sql = "SELECT field1, field2 FROM tbl WHERE field1 = '$id' OR field2 = '$id'";

当变量$ id的值为“ 1”时$id = 1; ,结果将是:

MySQL returned an empty result set (i.e. zero rows).

现在,如果属性field1的值为“ 6” ,属性field2的值为“ 39” ,则结果将是:

id    |    field1    |    field2
--------------------------------
1     |    6         |    4
13    |    41        |    39

但是,如果您的SQL查询是这样的:

$sql = "SELECT field1, field2 FROM tbl WHERE id = '$id'";

并且变量$ id的值为“ 0” ,结果将是:

id    |    field1    |    field2
--------------------------------
50    |    10        |    12

因为在该行的属性id的值“ 50”处有一个“ 0”零。


现在,您要像表中那样对(field1 + field2)求和:

id    |    sum(field1+field2)
-----------------------------
1     |    10
50    |    22
13    |    80

因此,您的意思是您的SQL查询具有多个OR运算符,例如:

$sql = "SELECT field1, field2 FROM tbl WHERE field1 = '$field1' OR field2 = '$field2' OR field1 = '$field3'";

或这个:

$sql = "SELECT field1, field2 FROM tbl WHERE id = '$id1' OR id = '$id2' OR $id = '$id3'";

您的问题是什么意思?


我只是假设您想对具有属性field1或属性field2且其值与它们的数据匹配的所有行求和(字段1 +字段2):

$sql = "SELECT id , ( field1 + field2 ) AS `sum(field1+field2)` FROM tld WHERE field1 = '$field1' OR field2 = '$field2'";

如果变量$ field1的值为“ 6” ,变量$ field2的值为“ 39” ,则表结果如下所示:

id    |    sum(field1+field2)
-----------------------------
1     |    10
13    |    80

在最上面考虑了我们假设的表数据! 因为与“6”的值的字段1具有在其为“4”FIELD2的值的关系,因此(6 + 4)为10。之和的总和(FIELD1的值41 + FIELD2的值39)是80。现在,您想对属性sum(field1 + field2)的行进行求和(10 + 80 吗? 我们可以使用PHP脚本来处理此问题,如果您使用的是MySQL,则如下所示:

<?php
$connection = mysqli_connect($host, $user, $password, $database);

$sql = "SELECT id , ( field1 + field2 ) AS `sum(field1+field2)` FROM tld WHERE field1 = '$field1' OR field2 = '$field2'";

$result = mysqli_query($connection, $sql);

while($row = mysqli_fetch_array($result)) {
    $sum += $row['sum(field1+field2)'];
}

echo 'The sum is: ' . $sum;
?>

您可以测试它是否可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM