mysql - 在 mysql 的子查询中执行 SUM()

标签 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 不是很好,但我试过了。有人愿意解释一下吗?

最佳答案

你有一些语法错误,你不需要子查询。
您只需从 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;

关于mysql - 在 mysql 的子查询中执行 SUM(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45172365/

相关文章:

php - $_SESSION 不携带跨 php 页面

mysql - 删除重复行?

mysql - AWS Aurora 与 MySQL 的兼容性

mysql - 选择重复最大值(ID)

mysql - Rails 在架构加载时损坏二进制字段默认值

mysql - JOIN引起的重复

mysql - 如何在联接表中按日期选择最后一条记录

php - 记录时间/日期 PHP 表单插入 SQL 数据库?

mysql - 获取可插入任何给定字段的最大字符长度

mysql - 转义mySQL正则表达式中的问号