Столбец недействителен в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY

Это может быть очень глупая ошибка, но я просто не могу это исправить. У меня есть 2 таблицы, Вопросы и Вопросы_Рейтинг .

Questions:

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

<Сильный> Questions_Rating

В этой таблице пользователи будут оценивать вопросы на +1 или -1

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

Теперь я просто хотел бы задать вопрос из таблицы questions и SUM rate в таблице questions_rating для этого вопроса, что имеет ID = 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.

Я знаю, что SUM из этой ставки вернет 1 строку, и вопрос, предположительно, 1 строка, я не могу понять, что не так с этим запросом.

Я использую SQL Server 2008.

1
у вас нет запроса GROUP BY
добавлено автор V4Vendetta, источник

7 ответы

Вам придется группировать значения в соответствии с вопросом, чтобы вам нужно было

GROUP BY q.question

в конце вашего запроса

Хорошее объяснение здесь

4
добавлено

You are missing group by clause in your select statement.
As you have used sum() function which is an aggregate function
So you need to write group by for all the select columns.

  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";
2
добавлено

You are missing group by clause in your select statement.
As you have used sum() function which is an aggregate function
So you need to write group by for all the select columns.

  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";
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 
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 
2
добавлено

Вам нужна группа по q.question в вашем SQL-заявлении.

Ваша сумма должна возвращать только одну строку против таблицы, так как вы выбираете столбец вместе с суммой, которую вам нужно указать группу в выбранном столбце. В вашем случае это должно быть q.question , и сумма будет применяться к каждой группе вопросов.

2
добавлено

Вам нужна группа по q.question в вашем SQL-заявлении.

Ваша сумма должна возвращать только одну строку против таблицы, так как вы выбираете столбец вместе с суммой, которую вам нужно указать группу в выбранном столбце. В вашем случае это должно быть q.question , и сумма будет применяться к каждой группе вопросов.

2
добавлено
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)