Russian Qt Forum
Сентябрь 30, 2024, 10:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Разбить значение ячейки...  (Прочитано 8643 раз)
fedya
Гость
« : Март 31, 2008, 11:19 »

Приветствую.
Есть БД на SQLite, таблица Tbl1. У таблицы 2 столбца. DTime (VARCHAR) и Value (FLOAT).
Строки имеют вид (например):
          DTime                         Value
2008-03-01 00:00:00                9,1
2008-03-01 00:30:00                9,9
2008-03-01 01:00:00                9,3
2008-03-01 01:30:00                9,5
................................................
2008-03-31 23:30:00                12,2
2008-03-31 00:00:00                9,2
2008-03-31 00:30:00                6,2
2008-03-31 01:00:00                9,2
2008-03-31 01:30:00                9,2
................................................
2008-03-31 23:30:00                9,2

Как можно на QT при выводе информации пользователю представить данную таблицу в виде:

          2008-03-01     2008-03-01     2008-03-01     ............     2008-31-01
00:00        9,2                 9,2             9,2              ............          9,2
00:30        9,2                 9,2             9,2              ............          9,2
01:00        9,2                 9,2             9,2              ............          9,2
01:20        9,2                 9,2             9,2               ............         9,2
...
23:30       9,2                  9,2             9,2              ............           9,2
Записан
Tonal
Гость
« Ответ #1 : Март 31, 2008, 11:37 »

В стандарте SQL нет такой фичи, чтобы получить подобное одним запросом.
В MS SQL и вроде в MS Access оно есть.

А так только двумя запросами - одним состав столбцов, вторым данные.
Записан
Вячеслав
Гость
« Ответ #2 : Март 31, 2008, 11:38 »

Таки раз sqlite наверное проще всего через вторичную модель - пробегаешься по запросу с загоняешь данные в qstandarditemmodel , а ее уже показывешь пользователю ....

Есть БД на SQLite, таблица Tbl1. У таблицы 2 столбца. DTime (VARCHAR) и Value (FLOAT).
Кстати, а оно уже типы научилось хранить ? Или как раньше - все текстом ?
Записан
Вячеслав
Гость
« Ответ #3 : Март 31, 2008, 11:41 »

В стандарте SQL нет такой фичи, чтобы получить подобное одним запросом.
В MS SQL и вроде в MS Access оно есть.

А так только двумя запросами - одним состав столбцов, вторым данные.
ткни плиз где rtfm про m$Sql ? IMHO без sp такое вообще не сгородить .
И наверное не двумя , а n+1 где n число столбцов ?
Записан
Tonal
Гость
« Ответ #4 : Март 31, 2008, 11:50 »

Гугли PIVOT, TRANSFORM.

Ну а с количеством запросов - ты же после выполнение первого количество столбцов знаешь.
Вот псевдокод:
Код:
select
  (select Value from Tbl1 where DTime = cast('2008-03-01 ' || TIME_ONLY as TIMESTAMP)),
  (select Value from Tbl1 where DTime = cast('2008-03-02 ' || TIME_ONLY as TIMESTAMP))
  ...
from Tbl1
group by TIME_ONLY
где TIME_ONLY - это кусок из DTime в котором только время.
Вложенные селекты повторяешь столько раз, сколько получилось дат в первом запросе.
Так что можно безо всяких sp. :-)

P.S. Ну а можно вообще безо всех этих замут отсортировать данные по DTime и за один проход руками заполнить табличку. :-)
« Последнее редактирование: Март 31, 2008, 11:55 от Tonal » Записан
Вячеслав
Гость
« Ответ #5 : Март 31, 2008, 12:03 »

Ясно Подмигивающий Пойду гляну Подмигивающий

А sqlite уже select'ы такие тянет ?

PPS а вариант с таблицей IMHO тут самый прямой Подмигивающий
Записан
fedya
Гость
« Ответ #6 : Март 31, 2008, 12:15 »

Таки раз sqlite наверное проще всего через вторичную модель - пробегаешься по запросу с загоняешь данные в qstandarditemmodel , а ее уже показывешь пользователю ....

Есть БД на SQLite, таблица Tbl1. У таблицы 2 столбца. DTime (VARCHAR) и Value (FLOAT).
Кстати, а оно уже типы научилось хранить ? Или как раньше - все текстом ?

А фиг знает, я текстом храню
Записан
fedya
Гость
« Ответ #7 : Март 31, 2008, 12:23 »

В стандарте SQL нет такой фичи, чтобы получить подобное одним запросом.
В MS SQL и вроде в MS Access оно есть.

А так только двумя запросами - одним состав столбцов, вторым данные.

Вот я также хотел делать.
Записан
ритт
Гость
« Ответ #8 : Март 31, 2008, 12:46 »

n+1 джоинами, где n - число столбцов, отлично работает. только надо иметь в виду ограничение на 63 таблицы в одном запросе. если таблиц мало (как в данном случае), можно смело двиаться этим путём. такой запрос будет ожидаемо отрабатываться на разных скл.

есть альтернатива - group_concat/group by (для майскл) - нет ограничений на кол-во таблиц в запросе, зато group_concat в разных скл по-разному звучит
Записан
fedya
Гость
« Ответ #9 : Март 31, 2008, 13:10 »

n+1 джоинами, где n - число столбцов, отлично работает. только надо иметь в виду ограничение на 63 таблицы в одном запросе. если таблиц мало (как в данном случае), можно смело двиаться этим путём. такой запрос будет ожидаемо отрабатываться на разных скл.

есть альтернатива - group_concat/group by (для майскл) - нет ограничений на кол-во таблиц в запросе, зато group_concat в разных скл по-разному звучит

Откуда скакать начинать??? Я раньше на QT не отображал данные с БД. Я так понимаю, что нужно использовать QSqlQueryModel, QTabWidget и ...?
Записан
ритт
Гость
« Ответ #10 : Март 31, 2008, 13:36 »

тогда внимательно изучаем документацию, содержимое examples/sql и шевелим извилинами

если никто ничего добавить более не желает, полагаю, тема исчерпана

зы
если свяжешь QSqlQueryModel и QTabWidget, дай посмотреть...
Записан
fedya
Гость
« Ответ #11 : Март 31, 2008, 14:15 »

тогда внимательно изучаем документацию, содержимое examples/sql и шевелим извилинами

если никто ничего добавить более не желает, полагаю, тема исчерпана

зы
если свяжешь QSqlQueryModel и QTabWidget, дай посмотреть...
Спасибо. Если свяжу Подмигивающий обязательно выложу
Записан
Tonal
Гость
« Ответ #12 : Март 31, 2008, 16:23 »

В стандарте SQL нет group_concat-а. :-(
Так что на том же птице его не поиспользуешь.
Да и в SQLite тож не припомню...
Записан
ритт
Гость
« Ответ #13 : Март 31, 2008, 18:51 »

в стандарте нет, но но функции есть
аналогичные функции точно есть в свежих склайт и птице в девел-ветке
Записан
Alex03
Гость
« Ответ #14 : Апрель 01, 2008, 06:48 »

fedya
Ещё есть такой извращённый способ:
Если поменять столбцы со строками то кол-во столбцов будет жесткое (но большое) - 48
Далее генерится запрос с 48-мью столбцами, и если сервер его скушает то вуаля Улыбающийся

Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.246 секунд. Запросов: 21.