我有两张桌子:
1)ratemaster
字段包括:(1)id
(2)userid
(3)productid
(4)rating
2)productmaster
字段包括:(1)id
(2)productname
(3)category
(4)author
注意:评分来自5分
无论何时任何用户对任何产品给予评级,我都会将记录插入到ratemaster表中,如:1(id) 1002(userid) 995(productid) 4(rating)
我为每个用户存储上述数据。
产品主数据包含categoryname
,product name
。
现在我想从每个类别获得前3名评级产品如何编写mysql查询以实现以下输出
输出:
答案 0 :(得分:0)
由于你添加了PHP标签,我建议只计算所有条目的评级并从那里继续
Dimension, Date, Metric
A, Mon, 23
A, Tues, 25
B, Mon, 7
B, Tues, 9
这将为每个产品提供一行计算评级(总和/评级数)。如果您只对每个类别的前3个感兴趣,请执行以下操作
Dimension, Mon, Tues
A, 23, 25
B, 7, 9
答案 1 :(得分:0)
尝试这个 -
SELECT a.id,a.productname,a.category,a.rating
FROM (SELECT prd.id,prd.productname,prd.category,rt.rating,
CASE
WHEN @category != prd.category THEN @rownum := 1
ELSE @rownum := @rownum + 1
END AS rank,
@category := prd.category AS var_category
FROM productmaster prd
JOIN ratemaster rt ON rt.productid=prd.id
JOIN (SELECT @rownum := NULL, @category := '') r
ORDER BY prd.category,rt.rating DESC) a
WHERE a.rank<4;
答案 2 :(得分:-3)
{% for pair in myHandleHere|batch(2) %}
<div class="container">
{% for element in pair %}
<div>{{ element }}</div>
{% endfor %}
</div>
{% endfor %}
我认为如果我理解正确,这应该有效。希望它有效