nobel8
2015-05-26 01:35
采纳率: 100%
浏览 1.5k
已采纳

求大神给个思路!

 现在有一个店铺表关联一个评论表,一对多的关系,评论表里有个价格字段,现在需求是要根据查询店铺的信息同时根据评论表价格的平均价格排序还要分页,并且如果价格为0,算平均价格时不需要算上这列,求大神给思路
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • Tiger_Zhao 2015-05-26 01:41
    已采纳

    下面是已排序的全集,按照你用的数据库语法去分页。

            SELECT a.*, b.平均价格
              FROM 店铺表
         LEFT JOIN (
                        SELECT 店铺ID, AVG(价格) 平均价格
                          FROM 评论表
                         WHERE 价格 <> 0
                      GROUP BY 店铺ID
                   ) b
                ON a.店铺ID = b.店铺ID
          ORDER BY b.平均价格 DESC
    
    点赞 打赏 评论
  • danielinbiti 2015-05-26 01:41

    个人觉得应该冗余记录这个平均价格,在评论生成的时候自动计算平均价格到店铺表的平均价格冗余字段里,这种业务也没必要实时,只要相对实时就行了。
    如果靠分页的时候现计算能实现,但SQL过于复杂,降低效率。

    点赞 打赏 评论
  • 冰_欣 2015-05-26 02:06

    D//店铺 dId,dName
    P//评论 dId,salePrice

    delare @pageSize int;//每页个数
    delare @pageNum int;//页数
    select top (@pageSize * pageNum) d.dName,avg(p.salePrice) From P join D on p.dId=d.dId
    Group by d.dName order by avg(p.salePrice) asc
    having avg(p.salePrice)>0

    点赞 打赏 评论
  • redy_bai 2015-05-26 03:49

    如果做冗余,最好冗余 总价格和有效评论数俩字段

    点赞 打赏 评论

相关推荐 更多相似问题