2013-03-27 109 views
0

我有这些表:SQL服务器:SUM函数和数据从多个表

Hraci

  • IDHrace(INT)
  • Jmeno(VARCHAR)

Ucast_Zapas

  • ID_Hrace_zapas(INT)
  • branky(INT)

我想SUM

这多少 “branky” WHERE ID_Hrace_zapas=IDHrace and Jmeno="karel"例如...是我的代码:

SELECT 
    SUM(Ucast_Zapas.Branky), Ucast_Zapas.ID_Hrace_zapas, Hraci.Jmeno,Hraci.IDHrace 
FROM 
    Hraci, Ucast_Zapas 
WHERE 
    (Ucast_Zapas.ID_Hrace_zapas=Hraci.IDHrace) AND (Hraci.Jmeno='smajlik'); 

我不知道,问题出在哪里,SQl写这个错误:

Column 'Ucast_Zapas.ID_Hrace_zapas' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

+0

经验法则:当在SQL中使用聚合函数时,总是在非聚合列(也就是普通列)上使用GROUP BY。在这种情况下,你很可能需要跳过选择ID,因为那么你可以不用再玩SUM()函数 – Najzero 2013-03-27 10:31:27

+0

[踢坏坏习惯:使用旧式JOIN](http://sqlblog.com/ blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx) - 旧式*逗号分隔的table * style列表已停止使用ANSI- ** 92 ** SQL标准(超过** 20年前**) – 2013-03-27 10:32:39

回答

1
SELECT IDHrace, SUM(branky) 
FROM Hraci 
INNER JOIN Ucast_Zapas ON Ucast_Zapas.ID_Hrace_zapas=Hraci.IDHrace 
WHERE Hraci.Jmeno='smajlik' 
GROUP BY IDHrace 
+0

非常感谢,它的工作! :) – koky 2013-03-27 12:06:28