使用mysql连接来计算客户的发票数量

时间:2018-03-23 10:44:17

标签: mysql sql database join

我的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;

但它只返回给我一个客户,计数是总数而不是该客户的发票数。

2 个答案:

答案 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