Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Order By и строка / 10 сообщений из 10, страница 1 из 1
29.07.2014, 15:31:44
    #38708270
Hol1killer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Order By и строка
Всем доброго времени суток, возник вопрос по 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
29.07.2014, 15:48:49
    #38708297
Foxter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Order By и строка
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
29.07.2014, 16:09:03
    #38708325
oaken
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Order By и строка
Hol1killer,
обычно, для таких целей предусматривают колонку типа order с пригодным для сортировок значением, но как вариант можно так:
Код: sql
1.
2.
SELECT * FROM `table` 
order by cast(substring(title, 2, 100) as decimal)


могут быть тормоза из-за фуллсканов
...
Рейтинг: 0 / 0
29.07.2014, 16:09:46
    #38708327
Hol1killer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Order By и строка
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
29.07.2014, 16:25:10
    #38708335
Hol1killer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Order By и строка
oaken,

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

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

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


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

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

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

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

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

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

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

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


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