![]() |
|
![]() ![]() ![]() |
|
derilshows |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 22.3.2016 Репутация: нет Всего: нет |
Всем привет! Очень нужен Ваш совет.
Есть БД, где в одной колонке записаны коды в виде: 10, 10-09, 10-10, 10-11, 15, 15-02, 15-03 и тд. Каждому значению соответсвтует месяц(в числовом формате). Я делаю SQL запрос, в котором выводится какие коды в каком месяце, с подсчетом сколько раз были вызваны. Запрос отображается в QTableView. Выходит формат: СКОЛЬКО РАЗ БЫЛ ВЫЗВАН, В КАКОМ МЕСЯЦЕ, КАКОЙ КОД. Например, будет вывод: 125, 04, 10-09 4, 04, 10-10 93, 05, 15-02 43, 05, 15-03 Что я хочу: Все коды, которые начинаются на две одинаковые цифры, должны обьединиться в одну строку, и уже отображаться только этими первыми двумя цифрами. Но нужно сохранить сортировку по месяцам, дабы коды из разных месяцев не склеивались. Естественно, первая коллонка(сколько раз был вызван) при обьединении должна суммировать соответственные значения строк, что склеиваются. В итоге, должно выйти так: 129, 04, 10 136, 05, 15 Можно ли решить этот вопрос чисто SQL? Или нужно использовать QT модель? Очень прошу помочь, совсем не представляю как это сделать. |
|||
|
||||
ss |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
мне кажется проще будет сделать такое в с++ чем в sql а модель все равно нужна для TableView.
Я так бы сделал : берем QSqlTableModel, выполняем запрос. В результате в этой модели будет данные (как в примере выше). берем QStandardTableModel - модель кот. будет у TableView в цикле по всем строкам читаем QSqlTableModel смотрим, есть ли запись с кодом QSqlTableModel[j][code] == QStandardTableModel[i][code] ? ДА: добавить к счетчику значение повторений; НЕТ: добавить строку с записью. Тут не указано когда будут одинаковые коды но разные месяцы. Ну а дальше устанавливаем модель в TableView. Это сообщение отредактировал(а) ss - 24.3.2016, 00:30 |
|||
|
||||
derilshows |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 22.3.2016 Репутация: нет Всего: нет |
Функция должна срабатывать только когда оба значения совпадают. Так как в разных месяцах могут быть одинаковые коды, но мне никак не надо перемешивать все)) Спасибо, не совсем понимаю как это реализовать, но буду пытаться. |
|||
|
||||
ss |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
у меня Qt v 5.6.0. Его немного переделали. вместо QSqlTableModel взял QSqlQuery.
|
|||
|
||||
derilshows |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 22.3.2016 Репутация: нет Всего: нет |
Ого, даже код есть! Не ожидал, огромное спасибо Вам!! У меня вопрос. Не совсем понятно как работает фрагмент наращивания счетчика. Программа мониторит строки в qtableview. Если два заданных параметра совпадают, допустим у пяти строк, то вместо них будет одна, где в первой ячейке будет сумма всех 5 первых ячеек из этих строк. Верно ли я понимаю, как будет работать? |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
http://sqlfiddle.com/#!9/4a519/2/0 Не ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |