我无法弄清楚如何为这种情况创建查询:
这是我的问题的更新版本。
我有3张桌子。
`customers`: `id` , `name` , `address`
`cars`: `id` , `license_nr` , `make` , `customer_id`
`services`: `id` , `car_id` , `description`
每次客户来到服务时,都会在services
表中创建新记录。我想知道每个客户的服务数量。 services
和customers
之间没有直接关系。
编辑:更正服务表中的列名。
答案 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