我想查询一个关于产品的信息、订购的数量(需要从另一张表中作统计),然后按照它订购数量做降序排列,取前十个记录。
目前,只实现了前两个要求,SQL语句如下:
 select opr.prd_id as prdId, prd.name as name, count(opr.prd_id) as n
   from tb_combo_order_prd_rel opr, tb_combo_prd_info prd
  where prd.prd_id = opr.prd_id
    and opr.prd_id in
        (select rpd.prd_id from tb_combo_rel_prd rpd where rpd.type = 0) and rownum<=5
  group by (opr.prd_id, prd.name)
  order by n desc但是假如用rownum取前十个记录的时候,它只是对在没有使用count前的行数进行统计,而非使用count后的行数进行统计。
请问各位有没有什么好的方法呢?或者是改变原来SQL语句的基础上来解决问题?

解决方案 »

  1.   


    select * from(
    select opr.prd_id as prdId, prd.name as name, count(opr.prd_id) as n
      from tb_combo_order_prd_rel opr, tb_combo_prd_info prd
      where prd.prd_id = opr.prd_id
      and opr.prd_id in
      (select rpd.prd_id from tb_combo_rel_prd rpd where rpd.type = 0)
      group by (opr.prd_id, prd.name)
      order by n desc
    ) where rownum <=10
      

  2.   

    太谢谢了!!!突然发现原来这样就可以了喔~~~我想太多了~~~~~~o(>_<)o ~~