mysql在select上添加多列(&M)

sd2nnvve  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(238)

我的数据库如下所示
表名:订单明细

id       oid      pid   pquantity  pprice
--------------------------------------
  1       1       5        2       10
  2       1       6        3       5
  3       1       7        1       20
  5       2       8        1       5
  6       2       9        1       5
  7       3       5        5       10

表名:订单

id       odiscount oshipping
----------------------------
  1       5       5        
  2       0       5        
  3       0       5

我想得到每个订单的发票金额。 (pquantity*pprice)-odiscount+oshipping . 棘手的部分是,每个订单的订单细节中可以有多个条目。所以我不知道该怎么处理。最终结果应该是

oid   total
1     55
2     15
3     55

我使用下面的sql尝试了这一点,但是我不知道如何考虑订单细节中的多行。

SELECT SUM((orderdetails.pprice*orderdetails.pquantity) - orders.odiscount + orders.oshipping) FROM orders LEFT JOIN orderdetails ON orderdetails.oid = orders.id GROUP BY orders.id
vx6bjr1n

vx6bjr1n1#

我相信您甚至不用使用子查询也可以做到这一点:

SELECT SUM(od.pquantity*od.pprice) + AVG(o.oshipping - o.odiscount)
FROM Orders o
INNER JOIN OrderDetails od
    ON o.id = od.oid
GROUP BY o.id

此处演示:

sqlfiddle公司

epggiuax

epggiuax2#

你可以把 order_details 先查询,然后在 orders 表格:

SELECT sum_details - odiscount + oshipping
FROM   orders o
JOIN   (SELECT   oid, SUM(pquantity * pprice) AS sum_details
        FROM     order_details
        GROUP BY oid) d ON o.id = d.oid

相关问题