求一数据库查询语句

mamba10 2013-03-11 01:31:54
先有2张表
用户表Users: 用户id
文章表 Articles : 文章id 文章阅读量readNum

1, 根据 用户发表的文章数量 给用户排序
比如 用户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 语句的写法
...全文
299 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
mamba10 2013-03-11
  • 打赏
  • 举报
回复
引用 14 楼 fangmingshijie 的回复:
引用 13 楼 mamba10 的回复:引用 12 楼 fangmingshijie 的回复:Java code?1234String hql = "select sum(a.readNum) from (select readNum from Article) a order by a.readNum desc"; Query query = this.g……
我写出来了 灰常感谢你..分也给你.. 这样的 List<Users> list = ht.find("select art.users from Article as art group by art.users.id order by sum(art.readNum) desc ");
mamba10 2013-03-11
  • 打赏
  • 举报
回复
引用 14 楼 fangmingshijie 的回复:
引用 13 楼 mamba10 的回复:引用 12 楼 fangmingshijie 的回复:Java code?1234String hql = "select sum(a.readNum) from (select readNum from Article) a order by a.readNum desc"; Query query = this.g……
不是不是, 我查找的就是所有用户啊 , 查询的结果是排序好的所有用户.. 自己不输入任何条件的 根据 用户所有文章的总阅读量对用户进行排序的 灰常感谢~
  • 打赏
  • 举报
回复
引用 13 楼 mamba10 的回复:
引用 12 楼 fangmingshijie 的回复:Java code?1234String hql = "select sum(a.readNum) from (select readNum from Article) a order by a.readNum desc"; Query query = this.getHibernateTemplate(……
这不就是你要的结果吗?自己不会加上“用户1 发表 3 篇文章 每篇阅读量为10”这些数据对应的字段吗?
mamba10 2013-03-11
  • 打赏
  • 举报
回复
引用 12 楼 fangmingshijie 的回复:
Java code?1234String hql = "select sum(a.readNum) from (select readNum from Article) a order by a.readNum desc"; Query query = this.getHibernateTemplate().getSessionFactory() ……
这个貌似还是不对 是对 用户进行排序. 排序的 依据是 该用户发表的所有文章的阅读量 之和
  • 打赏
  • 举报
回复

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();
mamba10 2013-03-11
  • 打赏
  • 举报
回复
引用 10 楼 fangmingshijie 的回复:
引用 9 楼 fangmingshijie 的回复:Java code?12345String hql = "select * from Article where userId=" + user.getUserId()+ "order by readNum desc"; Query query = this.getHibern……
这是 按照阅读量 给文章排序啊, 我的意思是 按照 每个用户发表的所有文章的阅读量之和 来给用户进行排序
  • 打赏
  • 举报
回复
引用 9 楼 fangmingshijie 的回复:
Java code?12345String hql = "select * from Article where userId=" + user.getUserId()+ "order by readNum desc"; Query query = this.getHibernateTemplate().getSessionFa……


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


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();
mamba10 2013-03-11
  • 打赏
  • 举报
回复
引用 6 楼 fangmingshijie 的回复:
你的表结构呢




  • 打赏
  • 举报
回复
你的表结构呢
mamba10 2013-03-11
  • 打赏
  • 举报
回复
引用 3 楼 flagiris 的回复:
order by 发表文章数 * 每篇阅读量 desc
问题是举的例子 . 每一篇文章的阅读量 是不同的..
mamba10 2013-03-11
  • 打赏
  • 举报
回复
引用 2 楼 fangmingshijie 的回复:
“xx order by 总阅读量”不就行了吗?
就是那个 总阅读量不知道怎么写..
菖蒲老先生 2013-03-11
  • 打赏
  • 举报
回复
order by 发表文章数 * 每篇阅读量 desc
  • 打赏
  • 举报
回复
“xx order by 总阅读量”不就行了吗?
mamba10 2013-03-11
  • 打赏
  • 举报
回复
2 根据 用户发表的文章数量的总的阅读量给用户进行排序

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧