2013-04-18 97 views
2

我想在java中的DAO類中獲取兩個不同的select查詢。在DAO類的單個列表中從兩個查詢中獲取結果

public List<SBCDocumentDetailsVO> getsBCDetails() throws DataAccessException, SQLException{ 
List<SBCDocumentDetailsVO> sbcDocList = new ArrayList<SBCDocumentDetailsVO>(); 


MapSqlParameterSource namedParameter = new MapSqlParameterSource(); 

//using NamedParameterJdbcTemplate for querying 
sbcDocList = this.getNamedParameterJdbcTemplate().query(
     sbcDetailsQuery, namedParameter, 
     new sBCDetailsMapper()); 
return sbcDocList; 

}

我選擇查詢是

SELECT State, marketId, COUNT(marketId) 
FROM BatchReport 
GROUP BY State, marketID 


SELECT 
SUM(CASE marketID WHEN 'in' THEN 1 ELSE 0 END) AS totalCountInd 
,SUM(CASE marketID WHEN 'gr' THEN 1 ELSE 0 END) AS totalCountGrp 
FROM BatchReport 

可以在任何一個可以幫助我得到2個查詢在一個單獨的列表。

+0

你想要一個簡單的工會嗎?以最簡單的方式,您可以爲每個查詢結果創建一個'new ArrayList()'並調用'addAll(resultList)'。 – 2013-04-18 06:04:21

+0

我想我不能使用union here.find下面的查詢。 選擇狀態,marketId,COUNT(marketId) FROM BatchReport GROUP BY狀態,marketID SELECT SUM(CASE marketID WHEN '中',那麼1 ELSE 0 END)AS totalCountInd ,SUM(CASE marketID WHEN「GR 'THEN 1 ELSE 0 END)as totalCountFROM BatchReport – 2013-04-18 06:08:34

+0

你能否證明一個例子。 – 2013-04-18 06:11:42

回答

1

從我的角度來看,你有兩種可能性:


收集合並

這樣做是爲了執行這兩個查詢和兩個結果添加到一個列表:

... 
List result = new ArrayList(); 
result.addAll(firstQuery()); 
result.addAll(secondQuery()); 
... 

SQL UNION

對於SQL聯盟,您將有一個查詢將用於檢索整個結果列表。您可以檢查該怎麼辦呢here

你的情況,不能你做這樣的事情:

SELECT 
    State, 
    marketId, 
    COUNT(marketId) 
FROM 
    BatchReport 
GROUP BY 
    State, 
    marketID 
UNION 
SELECT 
    'Total', 
    SUM(CASE marketID WHEN 'in' THEN 1 ELSE 0 END) AS totalCountInd, 
    SUM(CASE marketID WHEN 'gr' THEN 1 ELSE 0 END) AS totalCountGrp 
FROM BatchReport 

我會花時間在SQL UNION解決方案,因爲它通過quering解決問題數據庫只是一次。

你可以看到一個DEMO這裏:http://sqlfiddle.com/#!2/e5285/1

0

簡單的方法可以創建一個查詢,並與所有的列上創建一個bean。 以下查詢應該有所幫助:

SELECT State, marketId, COUNT(marketId),SUM(CASE marketID WHEN 'in' THEN 1 ELSE 0 END) AS totalCountInd ,SUM(CASE marketID WHEN 'gr' THEN 1 ELSE 0 END) AS totalCountGrp 
FROM BatchReport 
GROUP BY State, marketID 

原諒我的語法[我在Oracle工作]

+0

嗨...我試着用這個查詢。但它沒有給總totalCountInd和totalCountgr列.. – 2013-04-19 04:58:09

+0

它會給每個州的totalcount,每marketid 。這不是你想要的嗎? – Lokesh 2013-04-19 05:08:01

相關問題