我的数据库中存储了以下数据。
我想知道每辆车搜索次数最多的 10 个零件是什么。 下面我做了一个存储在数据库中的数据的示例。
一张表包含带有汽车 ID 的汽车名称。
一张表包含每辆车的带有一个或多个请求 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 `
有人知道我如何获得正确的数据吗?
最佳答案
试试这个:
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 `
关于mysql - Sql 显示每个组中前 10 个请求的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29140488/