如何将mysql两行相加和相乘

时间:2018-04-03 21:50:52

标签: php mysql

我有两个产品具有相同的唯一代码(数据库表):

+----------------------------------+-----+-------+
|               CODE               | QTY | Price |
+----------------------------------+-----+-------+
| 977b8213fd7s7d0129f4358a75ca967f | 143 | 11.83 |
| 977b8213fd7s7d0129f4358a75ca967f |  31 | 10.48 |
+----------------------------------+-----+-------+

我必须对QTYPrice求和并乘以得到总价。

在上面的例子中,总价应该是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();
}

为什么我得到两个总数以及我做错了什么?

2 个答案:

答案 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";