Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 27.08.2017
Сообщений: 10

Группировка данных в таблице

17.09.2017, 22:49. Показов 4191. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята помогите разобраться. Как получить подобный результат? Не могу понять как группировать данные по производителю и вывести информацию в консоль? Как на рисунке.


Делаю запрос к базе данных
C#
1
2
3
4
5
6
string zap = @"SELECT Company, model, prais FROM scb.phone";
 string connStr=MyClass.stringconn;
 MySqlConnection conn = new MySqlConnection(connStr);// создаём объект для подключения к БД
 DataSet ds = new DataSet();
 MySqlDataAdapter da = new MySqlDataAdapter(zap, conn);
 da.Fill(ds);

А дальше то как?
Миниатюры
Группировка данных в таблице  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.09.2017, 22:49
Ответы с готовыми решениями:

Группировка данных в таблице наподобие MS Access
Господа, подскажите, пожалуйста, как в Икселе группировать таблицы так, как это делает Аксэс? Пример во вложении: есть некая большая...

Сортировка/группировка данных в сводной таблице
Помогите пожалуйста с сортировкой, группировкой данных в сводной таблице

Как это сделно? Группировка данных + итоги по группам в "умной" таблице
Подскажите, какими инструментами сделана вот такая таблица: С одной стороны это обычная "умная таблица", на это указывают...

10
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18265 / 14189 / 5367
Регистрация: 17.03.2014
Сообщений: 28,877
Записей в блоге: 1
17.09.2017, 23:57
Alex_metro, группировать данные можно с помощью конструкции GROUP BY.
0
0 / 0 / 0
Регистрация: 27.08.2017
Сообщений: 10
18.09.2017, 20:46  [ТС]
Не совсем понятно. Добавил этот код. Но в консоле просто идет перебор сток записей таблицы. А как все таки сгруппировать по производителю?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
foreach (DataTable dt in ds.Tables)
            {
                Console.WriteLine(dt.TableName); // название таблицы
                // перебор всех столбцов
                foreach (DataColumn column in dt.Columns)
                    Console.Write("\t{0}", column.ColumnName);
                Console.WriteLine();
                // перебор всех строк таблицы
                foreach (DataRow row in dt.Rows)
                {
                    // получаем все ячейки строки
                    var cells = row.ItemArray;
                    foreach (object cell in cells)
                        Console.Write("\t{0}", cell);
                    Console.WriteLine();
                }
            }
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18265 / 14189 / 5367
Регистрация: 17.03.2014
Сообщений: 28,877
Записей в блоге: 1
18.09.2017, 20:58
Alex_metro, похоже я тебя неправильно понял. Тебе нужно вывести модели одного производителя друг за другом. Для этого достаточно отсортировать данные
SQL
1
2
SELECT Company, model, prais FROM scb.phone
ORDER BY Company, model
и затем при выводе в цикле смотреть выводили ли мы уже производителя для текущей строки. Если нет, то выводим имя. Затем выводим информацию о модели.
0
0 / 0 / 0
Регистрация: 27.08.2017
Сообщений: 10
18.09.2017, 21:18  [ТС]
Да! Почти у цели. Идея ясна.
осталось расписать эту строчку

"при выводе в цикле смотреть выводили ли мы уже производителя для текущей строки. Если нет, то выводим имя. Затем выводим информацию о модели"

на языке c#
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18265 / 14189 / 5367
Регистрация: 17.03.2014
Сообщений: 28,877
Записей в блоге: 1
18.09.2017, 21:19
Alex_metro, подумай как это можно сделать. Я не буду пока давать решения.
0
0 / 0 / 0
Регистрация: 27.08.2017
Сообщений: 10
18.09.2017, 21:20  [ТС]
Два цикла как-то увязать надо. Так?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18265 / 14189 / 5367
Регистрация: 17.03.2014
Сообщений: 28,877
Записей в блоге: 1
18.09.2017, 21:21
Alex_metro, два цикла здесь не нужны.
0
0 / 0 / 0
Регистрация: 27.08.2017
Сообщений: 10
18.09.2017, 23:18  [ТС]
Ну. Вот. Заработало.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 string a = "";
            // перебор всех таблиц
            foreach (DataTable dt in ds.Tables)
            {
                // перебор всех строк таблицы
                foreach (DataRow row in dt.Rows)
                {
                    if (a != row[0].ToString())
                    {
                        Console.WriteLine(row[0]);
                    }
                    a = row[0].ToString();
 
                    // получаем все ячейки строки
                    string id = row[1].ToString();
                    string tip = row[2].ToString();
                    Console.WriteLine(id+" "+tip);
                }
            }
Спасибо за идею!
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18265 / 14189 / 5367
Регистрация: 17.03.2014
Сообщений: 28,877
Записей в блоге: 1
18.09.2017, 23:26
Alex_metro, молодец. Пара советов:
1) Цикл по таблицам здесь не нужен т.к. запрос всегда возвращает одну таблицу
2) К колонкам лучше обращаться по именам, а не индексам. Это улучшает читабельность кода и страхует от ошибок
3) Переменным следует давать понятные имена
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
string prevCompany = "";
 
// перебор всех строк таблицы
foreach (DataRow row in ds.Tables[0].Rows)
{
    string company = row["Company"].ToString()
    if (prevCompany != company)
    {
        Console.WriteLine(company);
    }
    prevCompany = company;
 
    // получаем все ячейки строки
    string model = row["model"].ToString();
    string price = row["prais"].ToString();
    Console.WriteLine(model + " " + price);
}
P.S. Если есть возможность, то переименуй в базе данных колонку prais в price. Орфографические ошибки портят код как и любой другой текст.
0
0 / 0 / 0
Регистрация: 27.08.2017
Сообщений: 10
19.09.2017, 13:08  [ТС]
Спасибо дружище!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.09.2017, 13:08
Помогаю со студенческими работами здесь

Группировка строк в таблице
Здравствуйте, совсем недавно начал работать с Microsoft SQL Server 2008, в частности создание там баз данных. Возник вопрос по поводу...

Группировка строка в таблице списка
Всем доброго времени суток. Как сделать так, чтобы строки с одинаковой датой и временем группировались в одну?

Группировка колонок в таблице отчета СКД.
Доброго времени суток, возможно кому-то покажется мой вопрос банальный, но все таки. В скд указал динамическое формирование колонок,...

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

Группировка строк в таблице шаблона Word по данным из ListBox
Доброго времени суток. Помогие пожалуйста решить такую задачу. Имеется форма в книге Excel, в ней из ListBox данные передаются в шаблон...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru