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对多的关系
这里是分组显示每个班级有多少人的意思
...全文
24212打赏收藏
sql换成Hql问题,子查询
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对多的关系 这里是分组显示每个班级有多少人的意思
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
//使用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);