|
|
|
Order By и строка
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток, возник вопрос по ORDER BY. Есть табличка ее нужно отсортировать по заголовку ( у него тип VARCHAR ) . Заголовки имеют ввиду S1,S2,....,S10,S11,S12,.....,S20,S21,....S100 они пронумерованы. Подскажите как построить ORDER BY что бы на выходе было s1,s2,s3,s4,s5 и по порядку. Пробывал ORDER BY (title +0) ASC - не помогает сортировка рушится. Надеюсь понятно объяснил спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2014, 15:31:44 |
|
||
|
Order By и строка
|
|||
|---|---|---|---|
|
#18+
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 совпадает с последовательностью заголовков? Всегда? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2014, 15:48:49 |
|
||
|
Order By и строка
|
|||
|---|---|---|---|
|
#18+
Hol1killer, обычно, для таких целей предусматривают колонку типа order с пригодным для сортировок значением, но как вариант можно так: Код: sql 1. 2. могут быть тормоза из-за фуллсканов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2014, 16:09:03 |
|
||
|
Order By и строка
|
|||
|---|---|---|---|
|
#18+
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 хранит эти связи материала с дополнительными категориями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2014, 16:09:46 |
|
||
|
Order By и строка
|
|||
|---|---|---|---|
|
#18+
oaken, Спасибо, запрос отрабатывает, подскажите а что за тормоза из-за фулсканов ? Я так понимаю потому что длина взята 100 из-за этого? Я просто не знал эту функцию. Если преобразовать запрос к ввиду SELECT * FROM `table` order by cast(substring(title, 2, LEN(title)) as decimal) Проблема не решится ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2014, 16:25:10 |
|
||
|
Order By и строка
|
|||
|---|---|---|---|
|
#18+
Hol1killerПозиции заголовкам не совсем понял, я так понимаю что нет. Вам лучше, конечно, ввести позицию (отдельное числовое поле, скажем pos), по которому потом и сортировать. Потому как: 1. Вполне возможно Вы захотите хранить несколько наборов заголовков, скажем для разных представлений данных 2. Захотите изменить порядок заголовков не меняя названия. А сортировать путем изменения названия - не очень прямое решение )) И тогда Ваш order by будет просто order by pos, чтобы не произошло )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2014, 16:27:43 |
|
||
|
Order By и строка
|
|||
|---|---|---|---|
|
#18+
Foxter, Да я то прекрасно понимаю что проще взять поле order, там и есть ordering просто вопрос в том что каталог большой и он уже заполнен около 2000 записей и сортировать его сейчас достаточно сложно, учитывая что сортировка будет происходить только по Имени и все. Такое решение сейчас идеально подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2014, 16:32:58 |
|
||
|
Order By и строка
|
|||
|---|---|---|---|
|
#18+
Понятно Hol1killerВ скрипт возвращается нужный массив элементов Ну если с запросом не получится, всегда можно массив отсортировать ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2014, 16:35:48 |
|
||
|
Order By и строка
|
|||
|---|---|---|---|
|
#18+
Hol1killerПроблема не решится ?Проблема в том что индекс, если он есть, по полю title не будет использоваться для такой выборки. То есть для того чтобы отсортировать по такому выражению серверу придется выбрать все записи из таблицы, вычилить для каждой записи выражение и уже по результату выполнить сортировку. Но для 2000 записей, я думаю, это не критично. Если предполагается значительный рост количества записей, все-таки придется создать дополнительное поле числового типа, для существующих записей единожды заполнит его результатом вышеупомянутой функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2014, 16:39:54 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38708348&tid=1834437]: |
0ms |
get settings: |
5ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 372ms |

| 0 / 0 |
