我的invoices
表格有orderId
列,该列是引用orderId primary key column of orders table
的外键,订单表格有customerId
列,引用customerId
主键列客户表。
客户可以拥有多个订单,但订单只有一张发票。
我想计算每个客户的发票数量。以下是我试过的查询:
SELECT customers.name, COUNT(*) as number_of_invoices
FROM invoices
JOIN orders
ON invoices.orderId = orders.orderId
JOIN customers
ON orders.customerId = customers.customerId;
但它只返回给我一个客户,计数是总数而不是该客户的发票数。
答案 0 :(得分:3)
以下是您的问题的解决方案:
SELECT customers.name, COUNT(*) as number_of_invoices
FROM invoices
INNER JOIN orders
ON invoices.orderId = orders.orderId
INNER JOIN customers
ON orders.customerId = customers.customerId
GROUP BY Customers.name;
只需在查询中添加GROUP BY
,即可为每位客户分组发票组。
答案 1 :(得分:0)
如果您只需要了解每位客户的发票数量。可以在没有JOIN
的情况下完成。由于订单和发票具有一对一的映射,您可以使用以下sql查询
select customerId ,count(orderId) as invoice_count from orders group by customerId