如何计算所有发票的产品数量?

时间:2018-08-19 11:40:25

标签: mysql sql count

我有一个查询,其中选择了这样的特定发票:

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       |
+------+--------------+------+-----------+---------+

1 个答案:

答案 0 :(得分:-1)

这是{% url ... %}的工作。

尝试这样的事情:

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函数使这些行包含IFNULL()而不是null。