2017-05-06 78 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

相关问题