在mysql

时间:2017-07-18 16:24:25

标签: mysql

我有两个具有此设计的表

Invoices
-------
invoice_id
is_delivered

Data => (1, 'yes')

Invoice_products
----------------
ip_id
invoice_id
product_id
price

Data=> (1,1,1,5000), (2,1,2,7000)

现在我想要的是发票表的所有列和另一个表中的价格总和。像这样的东西

invoice_id = 1
is_delivered = 'yes'
total = 12000

我试过了,但结果并不正确。

SELECT * FROM invoices i INNER JOIN (SELECT invoice_id, SUM(price) AS total FROM invoice_products p ) AS t ON t.invoice_id = i.invoice_id;

我在mysql中不是很好,但我试过了。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

您有一些语法错误,并且您不需要子查询 您可以从invoice_products中选择全部并计算SUM - 这很容易。您已经完成了,但不要错过GROUP子句,它会相应地计算不同invoice_id的总和。如果你不需要它 - 只需省略groub条款 之后,您只需要加入invoices表以从此表中获取一些其他信息。

最终结果如下:

SELECT i.invoice_id, i.is_delivered, p.invoice_id, SUM(p.price) AS total
FROM invoice_products AS p 
INNER JOIN invoices AS i ON p.invoice_id = i.invoice_id
GROUP BY p.invoice_id;