我的数据库中存储了以下数据。
我想知道每辆车最常搜索的10个零件是什么。 下面我做了一个存储在数据库中的数据的例子。
一个表格包含车辆ID的车辆名称。
一张表格包含每辆车的一个或多个请求ID(' s)的请求。
一个表格包含请求id以及所请求部分的名称。
Table cars
audi (7)
bmw (12)
Table request
7 (100)
7 (234)
7 (367)
7 (562)
7 (729)
7 (765)
7 (881)
Table request_parts
100 (achterband)
234 (voorband)
367 (motor)
562 (accu)
729 (achterband)
765 (kopeling)
881 (koeling)
查询应返回的内容是这样的,例如' achterband'被发现两次
audi achterband 2
audi voorband 1
audi motor 1
audi accu 1
audi kopeling 1
我目前所拥有的查询计算了部件' motor'已经要求每辆车。但是,我不知道如何做到这一点,不仅仅针对一种产品,而是同时针对所有产品。现在,由于id已经显示,因此获得汽车名称并不重要。
SELECT COUNT(*), requests.sibben_brand_id, request_parts.name
FROM request_parts
JOIN requests ON requests.id = request_parts.request_id
WHERE requests.sibben_brand_id IS NOT NULL
AND request_parts.name LIKE 'motor'
GROUP BY requests.sibben_brand_id
ORDER BY COUNT(*) DESC `
是否有人知道如何获得正确的数据?
答案 0 :(得分:1)
试试这个:
SELECT COUNT(*), requests.sibben_brand_id, request_parts.name
FROM request_parts
JOIN requests ON requests.id = request_parts.request_id
WHERE requests.sibben_brand_id IS NOT NULL
GROUP BY requests.sibben_brand_id,request_parts.name
ORDER BY COUNT(*) DESC `
答案 1 :(得分:0)
带
cars table as (id,name)
request table as (id,car_id,request_id)
request_parts table as (id,request_id,part_name)`
以下查询返回前10条记录
select top 10 c.name, rqp.part_name,count(*) as repetition
from request as r, request_parts as rqp, cars as c
where rqp.request_id = r.request_id AND r.car_id = c.Id
group by rqp.part_name,c.name
order by repetition desc`