使用union进行多表查询

5 篇文章 0 订阅
2 篇文章 0 订阅

我在这边写了个存储过程,

--procedure_pdxx存储过程用于查询还未处理的排队信息,统计各个业务未处理的数量
IF EXISTS(SELECT * FROM sysobjects WHERE OBJECT_ID('procedure_pdxx') = ID AND type = 'P')
    DROP PROCEDURE procedure_pdxx
GO
PRINT 'CREATE PROCEDURE procedure_pdxx ......'
GO

create procedure procedure_pdxx
as
begin
	select COUNT(ZYBH) as count,'txxxbCount' as name from TXXXB where TXKSSJ is null and TXJSSJ is null and DATEDIFF(dd,getDate(),DJRQ)=0
	union
	select COUNT(ZYBH) as 'count','tjcsbCount' as name from TJCSDJB where CSSJ is null and HSSJ is null and DATEDIFF(dd,getDate(),DJRQ)=0
	union
	select COUNT(ZYBH) as 'count','lshjCount' as name from LSHJXXB where HJKSSJ is null and HJJSSJ is null and DATEDIFF(dd,getDate(),DJRQ)=0
	union
	select COUNT(ZYBH) as 'count','jshjCount' as name from JSHJXXB where HJKSSJ is null and HJJSSJ is null and DATEDIFF(dd,getDate(),DJRQ)=0;
end

exec procedure_pdxx;

exec procedure_pdxx得到的结果是

我是用mybatis将这个结果返回出去,这个返回的结果是list集合了

<!--查询排队信息正在等候的人数-->
  <select id="selectPdxxCount" resultType="List">
  	exec procedure_pdxx
  </select>

现在我思考一个问题,怎么样返回一个map集合呢

我还是写一个存储过程,如下:

--procedure_pdxx存储过程用于查询还未处理的排队信息,统计各个业务未处理的数量
IF EXISTS(SELECT * FROM sysobjects WHERE OBJECT_ID('procedure_pdxx') = ID AND type = 'P')
    DROP PROCEDURE procedure_pdxx
GO
PRINT 'CREATE PROCEDURE procedure_pdxx ......'
GO

create procedure procedure_pdxx
as
begin
	declare @txxxbCount int,@tjcsbCount int,@lshjCount int,@jshjCount int;
	
	select @txxxbCount = count(ZYBH) from TXXXB where TXKSSJ is null and TXJSSJ is null and DATEDIFF(dd,getDate(),DJRQ)=0
	
	select @tjcsbCount = count(ZYBH) from TJCSDJB where CSSJ is null and HSSJ is null and DATEDIFF(dd,getDate(),DJRQ)=0
	
	select @lshjCount = count(ZYBH) from LSHJXXB where HJKSSJ is null and HJJSSJ is null and DATEDIFF(dd,getDate(),DJRQ)=0
	
	select @jshjCount = COUNT(ZYBH) from JSHJXXB where HJKSSJ is null and HJJSSJ is null and DATEDIFF(dd,getDate(),DJRQ)=0;

	select @txxxbCount as txxxbCount,@tjcsbCount as tjcsbCount,@lshjCount as lshjCount,@jshjCount as jshjCount;
end

exec procedure_pdxx;

exec procedure_pdxx的结果是:

txxxbCounttjcsbCountlshjCountjshjCount
0000

然后mybatis中mapper的写法如下:

<!--查询排队信息正在等候的人数-->
  <select id="selectPdxxCount" resultType="Map">
  	exec procedure_pdxx
  </select>
Map<String, Object> selectPdxxCount();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值