Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сортировка по текстовому полю

Сообщения:  [1-7] 

 
 автор: Spenser   (17.03.2010 в 16:24)   письмо автору
 
   для: Trianon   (17.03.2010 в 16:13)
 

Спасибо за ответ:)
думаю второй вариант со значением сортировки будет лучше:)

  Ответить  
 
 автор: Trianon   (17.03.2010 в 16:13)   письмо автору
 
   для: Spenser   (17.03.2010 в 16:11)
 

Потому что текстовые данные сортируются лексикографически.
Числовые данные сортируются арифметически.
А если кто-то хочет всё сразу, то это "дай мне щенка, да чтоб не сукин сын".

Вы можете подправлять названия так, чтобы они становились ключе-корректными, т.е. порождающими лексикографический порядок, равный арифметическому. Как я показал.
Вы можете завести отдельное поле для сортировки , в котором указывать явные номера позиций.
Вы можете поднять все индексы в php и отсортировать их там natsort'ом, а затем запросить данные из таблицы повторно указав сортировку по позиции в списке.
Но последнее будет ересью. Хотя внешне Вас может и обрадует.

  Ответить  
 
 автор: Spenser   (17.03.2010 в 16:11)   письмо автору
 
   для: Trianon   (17.03.2010 в 15:59)
 

Ну ставить в названиях товаров пробелы это не выход.
а почему natsort() это ересь?

  Ответить  
 
 автор: Trianon   (17.03.2010 в 15:59)   письмо автору
 
   для: Spenser   (17.03.2010 в 15:25)
 

Вообще-то мне казалось, что любые артикулы (в т.ч. и артикулы Термекса) пишутся без пробелов.
Но если я ошибаюсь, то:

Водонагреватель Термекс H  10 O
Водонагреватель Термекс H  10 U
Водонагреватель Термекс H  30 O
Водонагреватель Термекс H 100 U

При чем на странице сайта Вы этого не увидите. Увидите именно как у Вас написано "должно быть".

иначе никак.
В php, правда, natsort() есть. Но, по-моему, это ересь мерзкая.
Хотите - можете его присобачить.

  Ответить  
 
 автор: Spenser   (17.03.2010 в 15:25)   письмо автору
 
   для: Trianon   (17.03.2010 в 14:52)
 

не, тут немного не про это:) товары для примера:
Водонагреватель Термекс H 10 O
Водонагреватель Термекс H 10 U
Водонагреватель Термекс H 100 U
Водонагреватель Термекс H 30 O

а должно быть по логике:
Водонагреватель Термекс H 10 O
Водонагреватель Термекс H 10 U
Водонагреватель Термекс H 30 O
Водонагреватель Термекс H 100 U

вот я про это, как такого добиться?

  Ответить  
 
 автор: Trianon   (17.03.2010 в 14:52)   письмо автору
 
   для: Spenser   (17.03.2010 в 14:31)
 

довольно странные названия товаров.
Можно посоветовать называть их так:
товар   1
товар   2
товар  10
товар  20
товар 100

  Ответить  
 
 автор: Spenser   (17.03.2010 в 14:31)   письмо автору
 
 

Здравствуйте
такая ситуация: у меня названия товаров хранятся в поле с типом ТЕХТ я сортирую по названию ORDER BY name, выводиться в таком виде:
товар 1
товар 10
товар 100
товар 2
товар 20
и т.д.
можно ли как то сделать чтобы сортировалось так (ме обязательно сразу в запросе, можно и потом обработать, но это уже если других вариантов не будет):
товар 1
товар 2
товар 10
товар 20
товар 100
?
я пробовал использовать ORDER BY CAST(name AS SIGNED), так сортируется нормально по числам, но тогда по алфавиту уже наоборот. подскажите как тут быть?

  Ответить  

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования