MYSQL:适用于每位客户的访问

时间:2015-03-12 22:55:08

标签: mysql

我无法弄清楚如何为这种情况创建查询:

这是我的问题的更新版本。

我有3张桌子。

`customers`: `id` , `name` , `address`

`cars`: `id` , `license_nr` , `make` , `customer_id`

`services`: `id` , `car_id` , `description`

每次客户来到服务时,都会在services表中创建新记录。我想知道每个客户的服务数量。 servicescustomers之间没有直接关系。

编辑:更正服务表中的列名。

3 个答案:

答案 0 :(得分:1)

以下是基于更新问题的更新解决方案:

select count(s.id) as service_tickets, cust.id, cust.name, cust.address 
from customers cust 
left join cars c on c.customer_id = cust.id
left join services s on s.car_id = c.id
group by cust.id

我对其进行了更新,因此对于没有汽车服务的客户,它会返回0。

答案 1 :(得分:1)

我想我会回答我自己的问题。也许别人会需要这个。谢谢大家的努力。

SELECT customers.name, COUNT(*) AS visit_count 
FROM services
JOIN cars ON cars.id = services.car_id
JOIN customers ON customer.id = cars.customer_id
GROUP BY customer_id

我得到了我想要的结果。

name         | visit count
Amal Hopkins |     1
Dean Leach   |     2

答案 2 :(得分:0)

SELECT customer, COUNT(*) FROM table GROUP BY customer;

更新:

如果访问在服务表中表示一行,那么我们就可以了,因为我们只需要计算服务表中的行数。外键不是问题。实际上,我们可以使用join来查看客户的名字。所以,语法应该是:

SELECT s.CustomerID, c.Name, COUNT(*) FROM services s
join customer c on c.id=s.CustomerID
GROUP BY CustomerID, c.Name