powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Посоветуйте как хранить в БД номер версии, чтобы его ... select max...
9 сообщений из 9, страница 1 из 1
Посоветуйте как хранить в БД номер версии, чтобы его ... select max...
    #39321479
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть текстовые данные такого формата: 4.8.15 (номер версии)
Как можно хранить эти данные в базе данных SQLite, чтобы можно было по полю с этими данными выполнять запрос вида: SELECT MAX(VERSION) FROM TABLE ?
...
Рейтинг: 0 / 0
Посоветуйте как хранить в БД номер версии, чтобы его ... select max...
    #39321562
pit_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ghost Writer,

можно хранить в отдельных полях, что то типа

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
WITH ver AS (
     SELECT 1 as id, 4 as major, 8 as minor, 15 as release
     UNION ALL
     SELECT 2 as id, 10 as major, 15 as minor, 1 as release  
     UNION ALL
     SELECT 3 as id, 25 as major, 2 as minor, 6 as release  
     UNION ALL
     SELECT 4 as id, 25 as major, 2 as minor, 8 as release  
     UNION ALL
     SELECT 5 as id, 1 as major, 0 as minor, 35 as release  
     UNION ALL
     SELECT 6 as id, 12 as major, 22 as minor, 2 as release  
     UNION ALL
     SELECT 7 as id, 6 as major, 10 as minor, 31 as release  
     )
SELECT major, minor, release FROM ver order by major desc, minor desc, release desc limit 1;



если же записи добавляются последовательно, по мере увеличения версий то можно хранить как строку и брать максимальный id
...
Рейтинг: 0 / 0
Посоветуйте как хранить в БД номер версии, чтобы его ... select max...
    #39322028
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ghost Writer,

А записей не много?
На лету преобразовать их в одно число и найти максимум не подойдет?
...
Рейтинг: 0 / 0
Посоветуйте как хранить в БД номер версии, чтобы его ... select max...
    #39322077
pit_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPA,

какое число больше?

61031 (6.10.31)

или

10151 (10.15.1)
...
Рейтинг: 0 / 0
Посоветуйте как хранить в БД номер версии, чтобы его ... select max...
    #39322101
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
записей будет довольно много, каждый месяц + до 300000

вариант с 3 полями приходил в голову но не нравится.

в идеале хотелось бы перед сохранением в БД как-то грамотно конвертировать в число, при этом чтобы обратно можно было конвертировать. потому что надеюсь, что так select будет выполняться быстрее.

в крайнем случае буду использовать такой вариант: выполнять предварительный запрос для вычисления максимальной версии и во втором запросе подставлять его в условие where
...
Рейтинг: 0 / 0
Посоветуйте как хранить в БД номер версии, чтобы его ... select max...
    #39322108
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ghost Writer,

лишний нолик )) 30 тысяч а не 300
...
Рейтинг: 0 / 0
Посоветуйте как хранить в БД номер версии, чтобы его ... select max...
    #39322136
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ghost Writer,

хм. много версий вы клепаете
а максимальный размер каждого разряда каким-то числом ограничен и элементов всегда 3?
как часто будет выполняться select max() ?
если часто то думаю, будет быстрее если материализовать рядом поле и хранить int64 + индекс по нему.
...
Рейтинг: 0 / 0
Посоветуйте как хранить в БД номер версии, чтобы его ... select max...
    #39322216
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPAматериализовать рядом поле и хранить int64 + индекс по немучестно говоря не понял, дилетант )
PPAэлементов всегда 3? да
PPAмаксимальный размер каждого разрядасамому хотелось бы знать точно.не думаю, что превысит 3.

кажется, придумал способ: каждый разряд представить как битовое поле.
таким образом, 4.8.15 можно представить как число 0x004008015
Думаю, вопрос решен. Спасибо за советы.
...
Рейтинг: 0 / 0
Посоветуйте как хранить в БД номер версии, чтобы его ... select max...
    #39322221
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ghost Writerвариант с 3 полями приходил в голову но не нравится.Зря не нравится. Самый правильный вариант.

Ghost Writerв идеале хотелось бы перед сохранением в БД как-то грамотно конвертировать в число, при этом чтобы обратно можно было конвертировать. потому что надеюсь, что так select будет выполняться быстрее.подсказываю: на таблицу можно сделать кучу вьюшек с вычисляемыми полями. Например так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table versions (
   major int,
   minor int,
   realease int,
   dateOfRelease date
);

create view versions2 as
select *,
   major ||'.'|| minor ||'.'|| realease as versionName,
   printf("%05d.%05d.%05d", major, minor, release) as zeroPaddedVersionName,
   -- some other variants...
;

потом добавляешь индексы на базовую таблицу по вкусу и всё.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Посоветуйте как хранить в БД номер версии, чтобы его ... select max...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]