【发布时间】:2018-08-19 11:40:24
【问题描述】:
我有一个查询,选择这样的特定发票:
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 |
+------+--------------+------+-----------+---------+
【问题讨论】:
-
你应该展示你想要的结果。您的问题不清楚您要达到的目标。
-
不清楚您想要的结果是什么。您可能会要求从发票中获取每一行并包含一列(每行都相同),这是发票中所有 DISTINCT 产品的计数。
-
还添加一个连贯的数据样本,而不仅仅是预期的结果..
-
只是需要注意,这取决于此处的用例,可能值得考虑实现 get_product_count_by_invoice_id() 函数
-
为什么不只计算应用程序中返回的行数?