我有两个具有此设计的表
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中不是很好,但我试过了。有人可以解释一下吗?
答案 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;