标题并没有多说,所以我会在这里解释一下。
我有一张桌子,
+------------+---------+------+-----+---------+----------------+
| 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'";
它将结果列为long field = id。
直到这一部分,一切都有效。我需要将这些返回行的结果相加。 $ id是从用户点击的预定义列表生成的动态值。
我想要的是对field1 + field2求和,并在更改id时正确过滤它们。
我的结果现在看起来像这样,
id | sum( field1+field2)
----------------------------
1 | 10
50 | 22
13 | 80
我想要总和(10 + 22 + 80)。如上所述,显示多少个id或行是动态的。根据用户选择进行更改。
答案 0 :(得分:4)
如果您想要多行,每行都有一行,请使用:
$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
。如果没有,那你就是standing on a landmine。
答案 1 :(得分:1)
让我们假设我们有一个名为 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 的所有行的(field1 + field2)求和与他们的数据匹配的值:
$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”的 field1 与 field2 的值有关系,“4”,因此(6 + 4)的总和是10.而(field1的值41 + field2的值39)的总和是80.现在,你想要在 sum(field1 + field2)属性的行上提到(10 + 80)的总和?我们可以使用PHP脚本来处理它,如果你使用的话是这样的:
<?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;
?>
你可以测试它是否有用..