1

这可能是一个非常愚蠢的错误,但我无法修复它。我有 2 个表,QuestionsQuestions_Rating

问题

question_id    question            user_id
------------------------------------------
1              'How to blablabla'     1
2              'bla bla bla'          1

问题_评分

在此表中,用户将按 +1 或 -1 对问题进行评分

question_rating_id   question_id     user_id      rate
------------------------------------------------------
1                         1            2          (+1)
2                         1            3          (+1)
3                         1            4          ( 1)

现在我只想从表中获取问题,以及该问题的表questions中的 SUM ,其中包含.ratequestions_ratingID = 1

String QUERY = "SELECT q.question, SUM(r.rate) FROM questions q, questions_rating r WHERE  r.question_id = q.question_id AND q.question_id = 1";

这就是我得到的。

选择列表中的“questions.question”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

我知道SUMrate 将返回 1 行,而问题应该是 1 行,我不知道这个查询有什么问题。

我正在使用 SQL Server 2008。

4

4 回答 4

4

您必须根据问题对值进行分组,因此您需要一个

GROUP BY q.question

在您的查询结束时

很好的解释在这里

于 2012-12-28T09:54:12.740 回答
2

您的 select 语句中缺少group by子句。
由于您使用sum()了一个函数,aggregate function
所以您需要group by为所有选择列编写。

  String QUERY = "SELECT 
                     q.question,
                     SUM(r.rate) 
                FROM 
                     questions q,
                     questions_rating r 
                where 
                     r.question_id = q.question_id AND 
                     q.question_id=1 
                group by 
                     q.question";
于 2012-12-28T09:51:12.553 回答
2

您需要group by q.question在您的 SQL 语句中。

假设您的 Sum 只针对表返回一行,因为您正在选择一列以及 Sum 您需要在所选列上指定一个组。在您的情况下,它应该是q.question,并且 sum 将应用于每组问题。

于 2012-12-28T09:52:44.100 回答
2
SELECT q.question,SUM(r.rate) AS RateSum
FROM questions q,questions_rating r 
WHERE r.question_id = q.question_id AND q.question_id=1 
GROUP BY q.question

或(使用 ANSI 92 样式连接)

SELECT q.question,SUM(r.rate) AS RateSum
FROM questions q INNER JOIN questions_rating r ON r.question_id = q.question_id
WHERE q.question_id=1 
GROUP BY q.question

或(使用子查询)

SELECT q.question, (SELECT SUM(r.rate) FROM questions_rating r WHERE r.question_id = q.question_id) AS RateSum
FROM questions q
WHERE q.question_id=1 
于 2012-12-28T09:55:04.403 回答