Название: Конвертация и изменение в QTableView + SQL Отправлено: derilshows от Март 23, 2016, 00:11 Всем привет! Очень нужен Ваш совет.
Есть БД, где в одной колонке записаны коды в виде: 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 модель? Очень прошу помочь, совсем не представляю как это сделать. Название: Re: Конвертация и изменение в QTableView + SQL Отправлено: GraninDm от Март 23, 2016, 20:35 Можно. Смотрите в сторону group by, sum и т.д.
Хотя, для обсуждения вы хотя бы свой запрос привели... Название: Re: Конвертация и изменение в QTableView + SQL Отправлено: derilshows от Март 23, 2016, 22:47 Я спрашивался с одной задачей(теперь в третьей колонке значения отображаются как их первые две цифры).
Структура такова: Числовое значение, месяц, код Number, Month, Code Например. При запросе был такой вывод: 200 02 04-03 30 02 04-04 10 03 04-05 Теперь(третья колонка изменилась). 200 02 04 30 02 04 10 03 04 Но результат должен выглядеть так: 230 02 04 10 03 04 То есть, если значения третьей колонки одинаковы, и их месяца тоже, эти строчки нужно соеденить в одну, при условии что в первой колонке должна быть сумма соедененных значений. (Показано в примере, было 200 и 30 в двух строчках, но их месяцы оказались одинаковы, и коды в третьей колонке после преобразования, тоже, поэтому они стали одной единой строкой, где в числовые значения из первой коллонки суммировались). Надеюсь, корректно описал суть проблемы. Собственно, SQL код на данный момент: Код
Название: Re: Конвертация и изменение в QTableView + SQL Отправлено: Bepec от Март 24, 2016, 00:13 Напишите свою хранимую процедуру на сервере sql и используйте её. Как вариант.
Название: Re: Конвертация и изменение в QTableView + SQL Отправлено: vbv от Март 24, 2016, 00:37 Автор - конспиратор.
1. Какая СУБД? 2. DDL собственно таблицы? 3. Запрос возвращает 4-е колонки. В примере выдачи 3. как? продолжим: 1. Что мешает сделать SUM(NUMBER). 2. Как вообще работает приведенный запрос т.к. NUMBER не указан под GROUP BY и не аггрегирован - субд должен выругаться. Тут комментария 2: 1. Почитать чего-то по поводу SQL вообще и по поводу конкретной СУБД в частности. 2. Тупо написать исходную таблицу и необходимую выдачу указав при этом СУБД в тему. Кто-то, из форумчан, напишет запрос и его использовать. Не разбираясь в SQL. Название: Re: Конвертация и изменение в QTableView + SQL Отправлено: PimenS от Март 24, 2016, 00:49 Но результат должен выглядеть так: 230 02 04 10 03 04 То есть, если значения третьей колонки одинаковы, и их месяца тоже, эти строчки нужно соеденить в одну, при условии что в первой колонке должна быть сумма соедененных значений. Ну так и суммируйте ту колонку в которой должна быть сумма Код: SELECT sum(Number) AS sum, month, left(code, 2) AS code Название: Re: Конвертация и изменение в QTableView + SQL Отправлено: derilshows от Март 24, 2016, 00:53 Автор - конспиратор. PostgreSQL1. Какая СУБД? 2. DDL собственно таблицы? 3. Запрос возвращает 4-е колонки. В примере выдачи 3. как? продолжим: 1. Что мешает сделать SUM(NUMBER). 2. Как вообще работает приведенный запрос т.к. NUMBER не указан под GROUP BY и не аггрегирован - субд должен выругаться. Тут комментария 2: 1. Почитать чего-то по поводу SQL вообще и по поводу конкретной СУБД в частности. 2. Тупо написать исходную таблицу и необходимую выдачу указав при этом СУБД в тему. Кто-то, из форумчан, напишет запрос и его использовать. Не разбираясь в SQL. Прошу прощения за некорректный sql-запрос. Number у меня и есть count(*). Корректный будет Код
Что мешает сделать сумму выведенных значений... SUM(COUNT(*)) не хочет делать. Название: Re: Конвертация и изменение в QTableView + SQL Отправлено: derilshows от Март 24, 2016, 00:55 Ну так и суммируйте ту колонку в которой должна быть сумма Дело в том что Number у меня это count(*), а Sum(count(*)) делать не хочет Название: Re: Конвертация и изменение в QTableView + SQL Отправлено: PimenS от Март 24, 2016, 00:59 Самый простейший вариант.
Создаете VIEW Код: CREATE VIEW count_code AS SELECT count(*), monthz, left(code, 2) AS code FROM tab GROUP BY monthz, code; а уже потом запрос осуществляете из представления Код: SELECT sum(count), monthz, code FROM count_code GROUP BY monthz, code; Название: Re: Конвертация и изменение в QTableView + SQL Отправлено: derilshows от Март 24, 2016, 01:23 Код
Естественно что поля count(*) нет. Записи в БД делаются так: Время, Код Время, Код Время, Код. Мини пример: 02(месяц), 0203 02, 0203 И результат запроса будет: 2(2 раза было записано), 02(месяц), 0203(код) Я своим запросом делаю выборку по коду, сортирую его по месяцам и вывожу число, сколько раз в этом месяце он был вызван. Надеюсь все корректно описал) Название: Re: Конвертация и изменение в QTableView + SQL Отправлено: PimenS от Март 24, 2016, 01:27 ответил исправлением предыдущего поста
без Sum(count(*)) скорее всего все равно не обойтись. Название: Re: Конвертация и изменение в QTableView + SQL Отправлено: derilshows от Март 24, 2016, 01:49 Как сделать это все одним запросом? Сделал
Код
ОШИБКА: ошибка синтаксиса (примерное положение: "select"). Пробовал сделать с GO, не помогает Название: Re: Конвертация и изменение в QTableView + SQL Отправлено: Old от Март 24, 2016, 08:44 Как сделать это все одним запросом? Сделал Можно делать выборку из результата другой выборки, примерно так:Код
Название: Re: Конвертация и изменение в QTableView + SQL Отправлено: stetsenko от Май 10, 2016, 23:10 как я раньше этот пост не нашел
|