[英]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.