我有两个产品具有相同的唯一代码(数据库表):
+----------------------------------+-----+-------+
| CODE | QTY | Price |
+----------------------------------+-----+-------+
| 977b8213fd7s7d0129f4358a75ca967f | 143 | 11.83 |
| 977b8213fd7s7d0129f4358a75ca967f | 31 | 10.48 |
+----------------------------------+-----+-------+
我必须对QTY
和Price
求和并乘以得到总价。
在上面的例子中,总价应该是2016.57(11.83×143 + 10.48×31 = 2016.57)。
我试过这个,但我得到两个总数(1691.69和2016.57):
$code = "977b8213fd7s7d0129f4358a75ca967f";
$ttl=0;
try{
$database = new Connection();
$db = $database->openConnection();
$sql= "SELECT qty*rraate AS sum FROM carrrt WHERE code = :code";
$qry = $db->prepare($sql);
$qry -> bindParam(':code', $code, PDO::PARAM_INT);
$qry -> execute();
while ($qnow = $qry->fetch(PDO::FETCH_ASSOC)){
$ttl += $qnow['sum'];
echo $ttl;
}
} catch (PDOException $e) {
echo "There is some problem in connection: " . $e->getMessage();
}
为什么我得到两个总数以及我做错了什么?
答案 0 :(得分:1)
听起来你想要使用聚合。
看看这是否可以解决您的问题
$sql= "SELECT SUM(qty*rraate) AS sum FROM carrrt WHERE code = :code";
我使用的select中的SUM()
称为聚合,这是从每一行收集数据并将其合并为某个值的主要方式。
除非您使用聚合,否则您将获得表格中每一行的明确答案。有关聚合的更多信息,您可以查看here
答案 1 :(得分:0)
尝试:
SELECT ROUND(SUM(rraate*qty),2) AS sum FROM carrrt WHERE code = :code";