Как отсортировать файлы в базе данных?

L
На сайте с 22.11.2013
Offline
92
370

Привет

Есть в базе записи. Имена файлов.

01-глава

02-глава

...............

100-глава

и если сортировка идет по етому полю. то в итоге

01-глава

02-глава

...............

100-глава

11-глава

12-глава

то есть сортирует не так как хотелось бы. Есть идеи как сделать?

LEOnidUKG
На сайте с 25.11.2006
Offline
1550
#1

В смысле это у вас такое поле одной строчкой?

---------- Добавлено 27.06.2019 в 16:22 ----------

Ну тут короче дичь всякую нашёл:

https://stackoverflow.com/questions/8557172/mysql-order-by-sorting-alphanumeric-correctly

или же сортировать уже при выводе в PHP

---------- Добавлено 27.06.2019 в 16:23 ----------

Ещё такое:

https://stackoverflow.com/questions/11808573/sql-order-string-as-number

✅ Трастовых площадок под размещение статей и ссылок. Опыт 12 лет! ( https://searchengines.guru/ru/forum/675690 ) ⭐ Купить вечные трастовые ссылки для сайта ( https://getmanylinks.ru/?srh ) ⭐ Ускорение ваших сайтов (WP, Opencart и др.) + Настройка сервера ( https://searchengines.guru/ru/forum/997205 )
L
На сайте с 22.11.2013
Offline
92
#2

спасибо. тоже как раз нашел

https://stackoverflow.com/questions/11808573/sql-order-string-as-number

L
На сайте с 22.11.2013
Offline
92
#3

что то не все так гладко с версиями

хотелось бы ето поменять местами

https://www.db-fiddle.com/f/5pGehU1Gg8XmxvpNnDBWet/2

IL
На сайте с 20.04.2007
Offline
412
#4
lutskboy:
хотелось бы ето поменять местами


SELECT *
FROM `comm`
ORDER BY CAST(`vers` as DECIMAL(9,2)) desc
, LENGTH(vers) DESC
L
На сайте с 22.11.2013
Offline
92
#5

вообще не то

IL
На сайте с 20.04.2007
Offline
412
#6
lutskboy:
вообще не то

Вообще, похоже на "то", только "вверх ногами", как и по Вашей ссылке.. Но если излагать мысли яснее, то больше шансов получить "то"...

SELECT *
FROM `comm`
ORDER BY CAST(`vers` as DECIMAL(9,2)) ASC
, LENGTH(vers) ASC

Удачи)

---------- Добавлено 25.07.2019 в 20:24 ----------

p.s. А вообще, правильно "обычное" индексное поле создать, в которое поместить требуемый порядок, чтоб при каждом обращении CAST и прочие функции не пересчитывать..

L
На сайте с 22.11.2013
Offline
92
#7

тоже не то 2.41 идет раньше чем 2.8 а ето ASC


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

только вот как его расчитывать

Хелпзонович
На сайте с 15.06.2005
Offline
133
#8
lutskboy:
Привет

Есть в базе записи. Имена файлов.
01-глава
02-глава
...............
100-глава

и если сортировка идет по етому полю. то в итоге
01-глава
02-глава
...............
100-глава
11-глава
12-глава

то есть сортирует не так как хотелось бы. Есть идеи как сделать?


CREATE TABLE IF NOT EXISTS tramp
(glava varchar(10));

INSERT INTO `tramp` (`glava`)
VALUES ('01-глава'),('11-глава'),('100-глава'),('05-глава'),('02-глава');

select glava,CAST(LEFT(glava, LOCATE('-глава',glava)-1) as UNSIGNED) as ind from tramp order by ind


Вы там держитесь! Хорошего вам настроения. Здоровья.
IL
На сайте с 20.04.2007
Offline
412
#9
lutskboy:
только вот как его расчитывать

Можно рассчитывать так, например:

https://www.db-fiddle.com/f/5pGehU1Gg8XmxvpNnDBWet/4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий