Название: Разбить значение ячейки... Отправлено: 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 Название: Re: Разбить значение ячейки... Отправлено: Tonal от Март 31, 2008, 11:37 В стандарте SQL нет такой фичи, чтобы получить подобное одним запросом.
В MS SQL и вроде в MS Access оно есть. А так только двумя запросами - одним состав столбцов, вторым данные. Название: Re: Разбить значение ячейки... Отправлено: Вячеслав от Март 31, 2008, 11:38 Таки раз sqlite наверное проще всего через вторичную модель - пробегаешься по запросу с загоняешь данные в qstandarditemmodel , а ее уже показывешь пользователю ....
Есть БД на SQLite, таблица Tbl1. У таблицы 2 столбца. DTime (VARCHAR) и Value (FLOAT). Кстати, а оно уже типы научилось хранить ? Или как раньше - все текстом ?Название: Re: Разбить значение ячейки... Отправлено: Вячеслав от Март 31, 2008, 11:41 В стандарте SQL нет такой фичи, чтобы получить подобное одним запросом. ткни плиз где rtfm про m$Sql ? IMHO без sp такое вообще не сгородить . В MS SQL и вроде в MS Access оно есть. А так только двумя запросами - одним состав столбцов, вторым данные. И наверное не двумя , а n+1 где n число столбцов ? Название: Re: Разбить значение ячейки... Отправлено: Tonal от Март 31, 2008, 11:50 Гугли PIVOT, TRANSFORM.
Ну а с количеством запросов - ты же после выполнение первого количество столбцов знаешь. Вот псевдокод: Код: select Вложенные селекты повторяешь столько раз, сколько получилось дат в первом запросе. Так что можно безо всяких sp. :-) P.S. Ну а можно вообще безо всех этих замут отсортировать данные по DTime и за один проход руками заполнить табличку. :-) Название: Re: Разбить значение ячейки... Отправлено: Вячеслав от Март 31, 2008, 12:03 Ясно ;) Пойду гляну ;)
А sqlite уже select'ы такие тянет ? PPS а вариант с таблицей IMHO тут самый прямой ;) Название: Re: Разбить значение ячейки... Отправлено: fedya от Март 31, 2008, 12:15 Таки раз sqlite наверное проще всего через вторичную модель - пробегаешься по запросу с загоняешь данные в qstandarditemmodel , а ее уже показывешь пользователю .... Есть БД на SQLite, таблица Tbl1. У таблицы 2 столбца. DTime (VARCHAR) и Value (FLOAT). Кстати, а оно уже типы научилось хранить ? Или как раньше - все текстом ?А фиг знает, я текстом храню Название: Re: Разбить значение ячейки... Отправлено: fedya от Март 31, 2008, 12:23 В стандарте SQL нет такой фичи, чтобы получить подобное одним запросом. В MS SQL и вроде в MS Access оно есть. А так только двумя запросами - одним состав столбцов, вторым данные. Вот я также хотел делать. Название: Re: Разбить значение ячейки... Отправлено: ритт от Март 31, 2008, 12:46 n+1 джоинами, где n - число столбцов, отлично работает. только надо иметь в виду ограничение на 63 таблицы в одном запросе. если таблиц мало (как в данном случае), можно смело двиаться этим путём. такой запрос будет ожидаемо отрабатываться на разных скл.
есть альтернатива - group_concat/group by (для майскл) - нет ограничений на кол-во таблиц в запросе, зато group_concat в разных скл по-разному звучит Название: Re: Разбить значение ячейки... Отправлено: fedya от Март 31, 2008, 13:10 n+1 джоинами, где n - число столбцов, отлично работает. только надо иметь в виду ограничение на 63 таблицы в одном запросе. если таблиц мало (как в данном случае), можно смело двиаться этим путём. такой запрос будет ожидаемо отрабатываться на разных скл. есть альтернатива - group_concat/group by (для майскл) - нет ограничений на кол-во таблиц в запросе, зато group_concat в разных скл по-разному звучит Откуда скакать начинать??? Я раньше на QT не отображал данные с БД. Я так понимаю, что нужно использовать QSqlQueryModel, QTabWidget и ...? Название: Re: Разбить значение ячейки... Отправлено: ритт от Март 31, 2008, 13:36 тогда внимательно изучаем документацию, содержимое examples/sql и шевелим извилинами
если никто ничего добавить более не желает, полагаю, тема исчерпана зы если свяжешь QSqlQueryModel и QTabWidget, дай посмотреть... Название: Re: Разбить значение ячейки... Отправлено: fedya от Март 31, 2008, 14:15 тогда внимательно изучаем документацию, содержимое examples/sql и шевелим извилинами Спасибо. Если свяжу ;) обязательно выложуесли никто ничего добавить более не желает, полагаю, тема исчерпана зы если свяжешь QSqlQueryModel и QTabWidget, дай посмотреть... Название: Re: Разбить значение ячейки... Отправлено: Tonal от Март 31, 2008, 16:23 В стандарте SQL нет group_concat-а. :-(
Так что на том же птице его не поиспользуешь. Да и в SQLite тож не припомню... Название: Re: Разбить значение ячейки... Отправлено: ритт от Март 31, 2008, 18:51 в стандарте нет, но но функции есть
аналогичные функции точно есть в свежих склайт и птице в девел-ветке Название: Re: Разбить значение ячейки... Отправлено: Alex03 от Апрель 01, 2008, 06:48 fedya
Ещё есть такой извращённый способ: Если поменять столбцы со строками то кол-во столбцов будет жесткое (но большое) - 48 Далее генерится запрос с 48-мью столбцами, и если сервер его скушает то вуаля :) Название: Re: Разбить значение ячейки... Отправлено: Tonal от Апрель 01, 2008, 07:17 2 Константин Это ты LIST для птица имел в виду?
Тады да, есть. :) |