请教个HQL语句,实在搞不清楚怎么做了

kedakeda 2008-10-22 12:42:38
俺基础比较差,只知道要用count但是怎么用弄了半天也没弄好,上来请教高手解决问题,顺便学习

现在有两个表
表A

A_ID
A_DATE
A_TEXT

表B
B_ID
A_ID
B_YES
B_NO



其中每条A表的数据,对应0到多条B表数据,每条B表数据对应一个A表数据
在映射里面的处理
 
<many-to-one name="A" class="A" fetch="select">
<column name="A_ID" precision="22" scale="0" not-null="true" />
</many-to-one>


现在需要按时间段查一个结果
每列结果列出的字段如下
A_ID,A_DATE,相应A_ID对应的B的YES的数目,相应A_ID对应的B的NO的数目


我自己写的HQL如下
select A.A_ID,A.A_DATE,COUNT(B.B_YES),COUNT(B.B_NO) from A as A,B as B where A.A_ID=B.A_ID and A.A_DATE between DATE1 and DATE2



请教各位高手
这么写对不对
请指点
...全文
122 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kedakeda 2008-10-23
  • 打赏
  • 举报
回复
问题解决


select new List( A.A_ID,A.A_DATE,COUNT(B.B_YES),COUNT(B.B_NO),SUM(CASE WHEN B.B_YES = 'yes' THEN 1 ELSE 0 END),SUM(CASE WHEN B.B_NO = 'yes' THEN 1 ELSE 0 END) ) from A as A,B as B where A.A_ID=B.A_ID and A.A_DATE between DATE1 and DATE2 GROUP BY A.A_ID,A.A_DATE
kedakeda 2008-10-22
  • 打赏
  • 举报
回复
具体应该怎么搞呢

实在不知道格式怎么样
yjfjebj789 2008-10-22
  • 打赏
  • 举报
回复
你可以在COUNT()里面写个查询语句 或者写多层select语句,
kedakeda 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lihan6415151528 的回复:]
select A.id as id,A.realName as name,count(A.id) as count from People A,TechnologyStore B where A.id=B.people.id and A.id in (select id from People where deptId="+deptid+") GROUP BY A.id,A.realName order by count(A.id) desc


这是我写得一个和你有同样功能语句 你看下

也是统计功能 两表查询 就是没有between日期那个 加上
[/Quote]

多谢多谢
但是可能我没有讲清楚

我需要统计(相应A_ID对应的B的YES字段当中的值为yes数目),和(相应A_ID对应的B的NO字段当中的值为yes数目 )
B_YES 和B_NO这两个字段都是boolean型
yami251139 2008-10-22
  • 打赏
  • 举报
回复
改用sqlexcutequery吧。。。
直接上sql
yjfjebj789 2008-10-22
  • 打赏
  • 举报
回复
select t.a from (select 'abc' as a)t
这种方式应该可以做出来

67,538

社区成员

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

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