先有2张表  
用户表Users:  用户id
文章表 Articles : 文章id   文章阅读量readNum1, 根据 用户发表的文章数量 给用户排序 
比如 用户1 发表2篇文章
     用户2 发表3篇文章
     用户3发表1篇文章  
排序结果为(高到低)   用户2  用户1 用户3
这个查询方式 我已经写出:
//下面三行,一下3个句子都能得到正确结果, ht 为hibernateTemplate对象
//List<Users> list = ht.find("from Users u order by u.articles.size");
//List<Users> list = ht.find("from Users u order by size(u.articles)");
//List<Users> list = ht.find("select distinct u from Users as u inner join u.articles as art order by u.articles.size ");先请教一查询语句 写法和上面的相似2 高扭矩 用户发表的文章数量的总的阅读量给用户进行排序
例如:  用户1 发表 3 篇文章  每篇阅读量为10  总阅读量30
      用户2 发表  5篇文章  每篇阅读量为 7   总阅读量 35
       用户3 发表1 篇文章  阅读量为100  总阅读量100 
从高到低 排序应为    用户3 用户2 用户1  请教 这一 hql 语句的写法数据库  hql 数据库     hql数据库hql

解决方案 »

  1.   

    “xx  order by 总阅读量”不就行了吗?
      

  2.   

    order by 发表文章数 * 每篇阅读量 desc
      

  3.   

    String hql = "select * from Article where userId="
    + user.getUserId()+ "order by readNum desc";
    Query query = this.getHibernateTemplate().getSessionFactory()
    .getCurrentSession().createQuery(hql);
    List<Long> list = query.list();
      

  4.   

    String hql = "select * from Article order by readNum desc";
            Query query = this.getHibernateTemplate().getSessionFactory()
                    .getCurrentSession().createQuery(hql);
            List<Long> list = query.list();
      

  5.   


    String hql = "select sum(a.readNum) from (select readNum from Article) a order by a.readNum desc";
            Query query = this.getHibernateTemplate().getSessionFactory()
                    .getCurrentSession().createQuery(hql);
            List<Long> list = query.list();
      

  6.   


    我写出来了  灰常感谢你..分也给你..
    这样的
    List<Users> list = ht.find("select art.users from Article as art group by art.users.id order by sum(art.readNum) desc ");