powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Order By и строка
10 сообщений из 10, страница 1 из 1
Order By и строка
    #38708270
Hol1killer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток, возник вопрос по ORDER BY.

Есть табличка ее нужно отсортировать по заголовку ( у него тип VARCHAR ) . Заголовки имеют ввиду S1,S2,....,S10,S11,S12,.....,S20,S21,....S100 они пронумерованы. Подскажите как построить ORDER BY что бы на выходе было s1,s2,s3,s4,s5 и по порядку.

Пробывал ORDER BY (title +0) ASC - не помогает сортировка рушится.

Надеюсь понятно объяснил спасибо.
...
Рейтинг: 0 / 0
Order By и строка
    #38708297
Фотография Foxter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hol1killerВсем доброго времени суток, возник вопрос по ORDER BY.

Есть табличка ее нужно отсортировать по заголовку ( у него тип VARCHAR ) . Заголовки имеют ввиду S1,S2,....,S10,S11,S12,.....,S20,S21,....S100 они пронумерованы. Подскажите как построить ORDER BY что бы на выходе было s1,s2,s3,s4,s5 и по порядку.

Пробывал ORDER BY (title +0) ASC - не помогает сортировка рушится.

Надеюсь понятно объяснил спасибо.

А каким запросом вы выбираете?
Позиции заголовкам не назначаете?
Нумерация PK совпадает с последовательностью заголовков? Всегда? ))
...
Рейтинг: 0 / 0
Order By и строка
    #38708325
oaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hol1killer,
обычно, для таких целей предусматривают колонку типа order с пригодным для сортировок значением, но как вариант можно так:
Код: sql
1.
2.
SELECT * FROM `table` 
order by cast(substring(title, 2, 100) as decimal)


могут быть тормоза из-за фуллсканов
...
Рейтинг: 0 / 0
Order By и строка
    #38708327
Hol1killer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Foxter,

Спасибо за ответ.

Запрос приблизительно следующий это Joomla

"SELECT DISTINCT i.`id`,i.*, c.name as categoryname,c.id as categoryid, c.alias as categoryalias, c.params as categoryparams FROM #__k2_items as i RIGHT JOIN #__k2_categories AS c ON c.id = i.catid LEFT JOIN #__k2_additional_categories AS ca ON ca.`itemID` = i.`id` WHERE i.published = 1 AND i.access IN(1,1,5) AND i.trash = 0 AND c.published = 1 AND c.access IN(1,1,5) AND c.trash = 0 AND ( i.publish_up = '0000-00-00 00:00:00' OR i.publish_up <= '2014-07-29 12:03:23' ) AND ( i.publish_down = '0000-00-00 00:00:00' OR i.publish_down >= '2014-07-29 12:03:23' ) AND (c.id IN (17) OR ca.`catid` IN (17)) AND i.featured != 1 ORDER BY i.title+0 ASC"

Позиции заголовкам не совсем понял, я так понимаю что нет.
Нумерация РК не совпадает с последовательностью заголовков.

Просто я SQL только изучаю.

В скрипт возвращается нужный массив элементов, но не в том порядке. Он не сортируется по i.title соответственно, точнее сортируется но не совсем правильно, я так понимаю из за того что i.title - это строка ??

Общий смысл запроса в том что есть материалы которые цепляются к категориям + могут цепляться в другие категории через отдельный select и как раз таблица #__k2_additional_categories хранит эти связи материала с дополнительными категориями.
...
Рейтинг: 0 / 0
Order By и строка
    #38708335
Hol1killer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
oaken,

Спасибо, запрос отрабатывает, подскажите а что за тормоза из-за фулсканов ? Я так понимаю потому что длина взята 100 из-за этого? Я просто не знал эту функцию.

Если преобразовать запрос к ввиду

SELECT * FROM `table`
order by cast(substring(title, 2, LEN(title)) as decimal)


Проблема не решится ?
...
Рейтинг: 0 / 0
Order By и строка
    #38708339
Фотография Foxter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hol1killerПозиции заголовкам не совсем понял, я так понимаю что нет.

Вам лучше, конечно, ввести позицию (отдельное числовое поле, скажем pos), по которому потом и сортировать. Потому как:

1. Вполне возможно Вы захотите хранить несколько наборов заголовков, скажем для разных представлений данных
2. Захотите изменить порядок заголовков не меняя названия. А сортировать путем изменения названия - не очень прямое решение ))

И тогда Ваш order by будет просто order by pos, чтобы не произошло ))
...
Рейтинг: 0 / 0
Order By и строка
    #38708344
Hol1killer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Foxter,

Да я то прекрасно понимаю что проще взять поле order, там и есть ordering просто вопрос в том что каталог большой и он уже заполнен около 2000 записей и сортировать его сейчас достаточно сложно, учитывая что сортировка будет происходить только по Имени и все. Такое решение сейчас идеально подходит.
...
Рейтинг: 0 / 0
Order By и строка
    #38708348
Фотография Foxter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно

Hol1killerВ скрипт возвращается нужный массив элементов

Ну если с запросом не получится, всегда можно массив отсортировать )))
...
Рейтинг: 0 / 0
Order By и строка
    #38708353
oaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hol1killerПроблема не решится ?Проблема в том что индекс, если он есть, по полю title не будет использоваться для такой выборки. То есть для того чтобы отсортировать по такому выражению серверу придется выбрать все записи из таблицы, вычилить для каждой записи выражение и уже по результату выполнить сортировку.
Но для 2000 записей, я думаю, это не критично.

Если предполагается значительный рост количества записей, все-таки придется создать дополнительное поле числового типа, для существующих записей единожды заполнит его результатом вышеупомянутой функции.
...
Рейтинг: 0 / 0
Order By и строка
    #38708544
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тоже не понял почему нельзя по варчару сортировать... ну и что что там везде одна и таже буква...всёравно верно отсортирует
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Order By и строка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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