下面的数据存储在我的数据库中。
我想知道每辆车搜索最多的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我现在有一个疑问,那就是每辆车都有多少次要求使用“马达”这个部件。然而,我不知道如何做到这不仅是对一个产品,但对所有他们在同一时间。现在有汽车的名字并不重要,因为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 ` 有没有人知道我怎样才能得到正确的数据?
发布于 2015-03-19 09:09:02
试着用这个:
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 ` 发布于 2015-03-19 09:59:29
使用
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`https://stackoverflow.com/questions/29140488
复制相似问题