我有一个查询,选择一个特定的发票,如下所示:
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条答案
按热度按时间fcg9iug31#
这是我的工作
GROUP BY
.尝试以下操作:
我猜从你使用
LEFT JOIN
您希望发票显示在结果集中的操作,即使它没有关联的产品。这个IFNULL()
函数使这些行包含0
而不是空的。