2016-10-12 1 views
0

Я пытаюсь GROUP BY в SQL-выражении с использованием Query Builder в VS 2015, но он не работает ... Не могли бы вы рассказать мне, что случилось? Спасибо! :)Оператор SQL Query Builder не работает. Как это исправить?

SELECT students_details.class AS Class, students.name AS Name, students.guardian AS Gurdian, students.phone AS Phone, students.mobile AS Mobile 
FROM students_det INNER JOIN students ON students_details.studentID = students.studentID 
ORDER BY Class 
GROUP BY Class 
+1

Если вы используете 'GROUP BY', вы можете выбрать только столбцы, которые вы группируете, или функции агрегации. Дополнительная информация в [этот вопрос] (http://stackoverflow.com/questions/11991079/select-a-column-in-sql-not-in-group-by). – smoksnes

+0

@smoksnes Пожалуйста, измените ваш комментарий, чтобы ответить. – codelab

+0

@codelab - Конечно. Это едва ли считается ответом, но теперь он там ... – smoksnes

ответ

2

Если вы используете GROUP BY, вы можете выбрать только те столбцы, которые вы группирование по или aggregation functions. Больше информации в this question. Или, как выразилось MSDN:

A Выберите пункт утверждения, что делит результат запроса в группы строк, как правило, с целью выполнения одной или несколько скоплений на каждую группу. Оператор SELECT возвращает одну строку для каждой группы.

Так что в вашем случае вы можете выбрать только Class, потому что каждая строка будет сгруппирован по Class. Вы можете посмотреть на него как Dictionary<string, List<Row>> на C#, где string здесь разные классы, а остальные . Или как двухмерный массив.

Что вы, вероятно, хотите сделать, это просто упорядочить по классу (без group by) или выполнить функцию агрегации в классе. Например, сколько учеников в каждом классе?

SELECT students_details.class AS Class, count(*) AS NumberOfStudents 
FROM students_det INNER JOIN students ON students_details.studentID = students.studentID 
ORDER BY Class 
GROUP BY Class 
Смежные вопросы