使用union進行多表查詢

我在這邊寫了個存儲過程,

--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的結果是:

txxxbCount tjcsbCount lshjCount jshjCount
0 0 0 0

然後mybatis中mapper的寫法如下:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章