mysql - 如何计算所有发票产品的数量?
问题描述
我有一个查询,选择了这样的特定发票:
SELECT i.*
FROM invoices i
WHERE i.id = 15
我还需要选择属于此发票的所有产品。我使用这个查询来做到这一点:
SELECT i.*, p.*
FROM invoices i
LEFT JOIN pivot pi
ON pi.invoice_id = i.id
LEFT JOIN products p
ON pi.product_id = p.id
WHERE i.id = 15
现在我想知道,如何使用count()
和计算发票的产品数量?
我想要这样的输出:
+------+--------------+------+-----------+---------+
| i.id | i.number | p.id | p.name | count() |
+------+--------------+------+-----------+---------+
| 15 | 123456 | 3 | SX12 | 5 |
| 15 | 123456 | 17 | MGS2 | 5 |
| 15 | 123456 | 14 | BFE12-3 | 5 |
| 15 | 123456 | 32 | LG2-1 | 5 |
| 15 | 123456 | 6 | VBDS2 | 5 |
+------+--------------+------+-----------+---------+
解决方案
这是一份工作GROUP BY
。
尝试这样的事情:
SELECT i.id, i.number, p.id, p.name, IFNULL(COUNT(*),0) product_count
FROM invoices i
LEFT JOIN pivot pi ON pi.invoice_id = i.id
LEFT JOIN products p ON p.id = pi.product_id
WHERE (whatever you need)
GROUP BY i.id, i.number, p.id, p.name
我猜从您对LEFT JOIN
操作的使用中,您希望发票出现在您的结果集中,即使它没有关联的产品。tHEIFNULL()
函数使这些行包含0
而不是空。
推荐阅读
- python - 试图在我的 Django 应用程序上创建第二个 forms.py 以在同一页面上发布
- c++ - 结构和指针问题
- python - 为什么我无法在某些网站上执行请求获取方法
- php - 如何在另一个 hasMany 关系中访问 hasMany
- r - 拜托,有人知道为什么我不能在 R 的向量中保存数据吗?
- c# - 如何为每个异步操作创建一个新上下文并以线程安全的方式使用它来存储一些数据
- matrix - 减去 SSRS 中矩阵表中的组列
- java - 将模拟推送到远程 Wiremock 服务器失败并出现“JSON Parsing”错误
- javascript - 导入节点模块时出现 ImportError
- python - 如何从 arcgis 10.2 发行版在 python 2.7 解释器上安装 psycopg2