2017-05-06 81 views
1

在我的MySQL Workbench中,下面的查詢工作完美:'SUM()' 中的輸出映射

SELECT card.number, SUM(qty) 
FROM card_set, card, user_card 
WHERE card_set.id = card.card_set_id 
AND user_card.card_id = card.id 
AND card_set.id = 1 
GROUP BY card.number ORDER BY card.number; 

然而,在我的Grails控制器,我有以下幾點:

SELECT card.number, SUM(qty)" + 
"FROM card_set, card, user_card\n" + 
"WHERE card_set.id = card.card_set_id\n" + 
"AND user_card.card_id = card.id\n" + 
"AND card_set.id = 1\n" + 
"GROUP BY card.number ORDER BY card.number;" 

和輸出是這樣的:

[['number':1, 'SUM(qty)':2], ['number':2, 'SUM(qty)':3], ['number':3, 
'SUM(qty)':0], ['number':4, 'SUM(qty)':0], ['number':5, 'SUM(qty)':-2], 
['number':6, 'SUM(qty)':0], ['number':7, 'SUM(qty)':2], ['number':8, 
'SUM(qty)':2], ['number':9, 'SUM(qty)':0], ['number':10, 'SUM(qty)':0], 
['number':11, 'SUM(qty)':1], ['number':12, 'SUM(qty)':0], ['number':13, 
'SUM(qty)':1], ['number':14, 'SUM(qty)':1], ['number':15, 'SUM(qty)':2], 
['number':16, 'SUM(qty)':-1], ['number':17, 'SUM(qty)':0], ['number':18, 
'SUM(qty)':0], ['number':19, 'SUM(qty)':1], ['number':20, 'SUM(qty)':0]] 

爲什麼Grails的踢出來的文字「SUM(數量)」的地圖列表?我如何格式化它不這樣做?

回答

0

SQL API和協議返回列標題元數據與每個結果集。這很方便:它允許像Workbench和Grails這樣的客戶端軟件找出每個列的數據類型和名稱。

但是對於聚合列行SUM(qty),MySQL服務器必須猜出這個名字。聚合列沒有列表中的列名稱。它猜測,好吧,SUM(qty)

如果你改變你的查詢的第一行SELECT card.number, SUM(qty) sum_qty你會得到一個更好的結果,因爲你告訴MySQL的名稱(在我的例子,sum_qty)要使用的列

+0

完美!知道有一個簡單的答案...謝謝 – dm123

相關問題