如何使用mysql查询

时间:2015-07-03 11:22:09

标签: php mysql core

我有两张桌子: 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) 我为每个用户存储上述数据。

产品主数据包含categorynameproduct name。 现在我想从每个类别获得前3名评级产品如何编写mysql查询以实现以下输出

输出:

need output like below

3 个答案:

答案 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 %}

我认为如果我理解正确,这应该有效。希望它有效