Sherif Kamel Ответов: 1

Подсчитайте строки, содержащие результат каждой ячейки из SQL compact server C#


У меня есть база данных SQL Compact server 3.5, которая содержит несколько записей, каждая запись должна быть классифицирована с определенным типом (например: уголовная, Гражданская, Арбитражная ... и т. д)
Я хочу заполнить список или таблицу со всеми классификациями в базе данных (уголовная, Гражданская, Арбитражная ... и т. д.) (Это самая простая часть)

И подсчитать все строки в базе данных, которые должны находиться под одной и той же классификацией (а именно, строка будет иметь имя классификации в своих данных)

простой пример:
http://i.imgur.com/6eMi8oW.jpg[^]
И результат должен быть:
http://i.imgur.com/swKFuof.jpg[^]

Что я уже пробовал:

Рабочий код < 3

try
            {
                sqlcon.Open();
                SqlCeCommand cm = new SqlCeCommand("SELECT  AKtype,  COUNT(AKtype) AS AKcount FROM Aklashehat GROUP BY AKtype ORDER BY AKcount", sqlcon);
                SqlCeDataReader sqldr = cm.ExecuteReader();

                    while (sqldr.Read())
                    {
                        ListViewItem item = new ListViewItem((listView1.Items.Count + 1).ToString());
                        item.SubItems.Add(sqldr["AKtype"].ToString());
                        item.SubItems.Add(sqldr["AKcount"].ToString());
                        listView1.Items.Add(item);
                    }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, ex.Message);
            }

Richard Deeming

Итак, некоторая комбинация ГРУППА ПО[^] и СЧИТАТЬ[^] тогда?

1 Ответов

Рейтинг:
7

0x01AA

Это должно сделать это:

SELECT
  Type,
  COUNT(Type)
FROM Aklashehat 
GROUP BY Type
ORDER BY COUNT(Type)

Некоторую предысторию вы можете найти-среди множества других мест-здесь:
SQL GROUP BY оператор[^]

Редактировать После обратной связи от ОП Камель Шериф - Профессионального Профиля[^], SQL CE немного отличается от, например, MS SQL 2014
SELECT
  AKtype,
  COUNT(AKtype)  AS AKcount
FROM Aklashehat 
GROUP BY AKtype
ORDER BY AKcount


Sherif Kamel

Возникает ошибка "выражения в списке GROUP BY не могут содержать агрегатную функцию"? Это что-то связанное с SQL Compact Server или я делаю что-то не так в listview. * Извините за поздний ответ, но я пытался разобраться в этом сам

0x01AA

Странно, но я действительно протестировал это в MS SQL Server 2014, и там оно работает хорошо.
Неужели это не просто опечатка?

Sherif Kamel

Ну, я попробовал его с помощью SQL CE cmd, и он работал идеально, но я все еще не могу заставить его работать в моем приложении

0x01AA

Можете ли вы опубликовать свой SQL в качестве комментария здесь? На самом деле часть кода c# копируется/вставляется :)

Sherif Kamel

SqlCeCommand см = новый SqlCeCommand("выберите AKtype, граф(AKtype) от Aklashehat группы по AKtype того, граф(AKtype)", sqlcon);

0x01AA

Попробуйте это на данный момент:
SqlCeCommand cm = new SqlCeCommand("SELECT AKtype, COUNT(*) FROM Aklashehat GROUP BY AKtype", sqlcon);

Sherif Kamel

Сэр, я выяснил это, я должен указать псевдоним для count(COUNT (AKcount) AS COUNT) и использовать его по порядку ( ORDER BY AKcount). Спасибо, сэр , что направили меня на правильный путь, и, пожалуйста, любезно обновите свой ответ.

0x01AA

Не могли бы вы, пожалуйста, опубликовать свой окончательный SQL здесь, чтобы избежать ошибок с моей стороны. Большое вам спасибо.

Sherif Kamel

Конечно, сэр, я уже обновил код, и вот рабочий SQL cmd " SELECT AKtype, COUNT (AKtype) AS AKcount FROM Aklashehat GROUP BY AKtype ORDER BY AKcount"

0x01AA

- Отлично, спасибо. Я добавил ваш окончательный SQL в решение, см. [Edit]