sql换成Hql问题,子查询

blliy117 2008-03-23 10:30:00
sql是这样的:



SELECT a.*, b_b.c
FROM t_ask_a a,
(SELECT b.ask_a_id, COUNT (1) AS c
FROM t_ask_b b
GROUP BY b.ask_a_id) b_b
WHERE a.ID = b_b.ask_a_id
ORDER BY b_b.c DESC

t_ask_a中的id 和t_ask_b的ask_a_id是1对多的关系

这里是分组显示每个班级有多少人的意思
...全文
242 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanfang8418 2010-09-16
  • 打赏
  • 举报
回复
楼主这个是怎么解决的,我也正好碰到这个问题了
blliy117 2008-04-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 blliy117 的帖子:]
sql是这样的:

SQL code


SELECT a.*, b_b.c
FROM t_ask_a a,
(SELECT b.ask_a_id, COUNT (1) AS c
FROM t_ask_b b
GROUP BY b.ask_a_id) b_b
WHERE a.ID = b_b.ask_a_id
ORDER BY b_b.c DESC



t_ask_a中的id 和t_ask_b的ask_a_id是1对多的关系

这里是分组显示每个班级有多少人的意思
[/Quote]

现在这个问题已解决了
blliy117 2008-04-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fuzhao918 的回复:]
方法1
表:t_ask_a POJO:AskA
表:t_ask_b POJO:AskB

AskB 属性askA对应AskA

select a,(select count(b) from AskB b where b.askA=a) from AskA a;

这样不知道怎么排序。

方法2
AskA定义属性
<property name="total" formula="(select count(*) from t_ask_b b where b.ask_a_id=id)"/>

HQL:from a order by total desc;
[/Quote]

这个不明白什么意思啊
fuzhao918 2008-04-09
  • 打赏
  • 举报
回复
方法1
表:t_ask_a POJO:AskA
表:t_ask_b POJO:AskB

AskB 属性askA对应AskA

select a,(select count(b) from AskB b where b.askA=a) from AskA a;

这样不知道怎么排序。

方法2
AskA定义属性
<property name="total" formula="(select count(*) from t_ask_b b where b.ask_a_id=id)"/>

HQL:from a order by total desc;
sharpyuce 2008-04-06
  • 打赏
  • 举报
回复

t_ask_a中的id 和t_ask_b的ask_a_id是1对多的关系

一定要使用Criteria的话可以这样,随便写的没测试:
Hql:

先查处t_ask_a中的id
//使用Map来存储不同的A中有多少B
Map map<String,int> = new HashMap(String,int);

list aa = session.createQuery("from aid a").list();

itaretor it = aa.itaretor();

while(it.hasNext()){
A a = (A)it.next();
//B类中有属性A a
int total = session.createCritria(b.class).add(Restrictions.gt("a",a.id)).list().size();
map.put(a.id+"",total);

}

代码有点多,好像不太实用。。。
chinaboy2005 2008-04-04
  • 打赏
  • 举报
回复
回帖是一种美德!
不会! 呵呵
waitgod 2008-04-03
  • 打赏
  • 举报
回复
回帖是一种美德!
小南瓜瓜 2008-03-31
  • 打赏
  • 举报
回复
formula
chongxiaoyihe 2008-03-26
  • 打赏
  • 举报
回复
(SELECT b.ask_a_id, COUNT (1) AS c
FROM t_ask_b b
GROUP BY b.ask_a_id
这条语句改成放在from的外面的形式。
UnknowREN 2008-03-25
  • 打赏
  • 举报
回复
refer to

Prejection
blliy117 2008-03-23
  • 打赏
  • 举报
回复
其实我希望可以用
criteria类来做!!怎么没有帮我呢
blliy117 2008-03-23
  • 打赏
  • 举报
回复
补充:

用criteria,和HQL语句都行,只要是hibernate的就行了,先谢谢了

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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