|
|
|
| Доброго времени суток! есть интернет магазин, у каждого товара есть артикул.
(ВК1310221, ВК1310222, ВМ1235412, К4658, РАК79878 и т.д.) сейчас выводится в разброс
подскажите как отсортировать чтобы при выводи товара по артиклу буквы были в алфавитном порядке и цифры по порядку? | |
|
|
|
|
|
|
|
для: admin
(04.06.2013 в 13:02)
| | Если при одинаковых буквах количество цифр всегда одинаковое, т.е. не может быть ВК221 и ВК1310222, то достаточно просто добавить в SQL-запрос
Если же такое возможно, то придется изголяться. Покажите ваш SQL-запрос для этого. | |
|
|
|
|
275.5 Кб |
|
|
для: Sfinks
(04.06.2013 в 13:28)
| |
mysql_query("SELECT * FROM img WHERE catalog='$catalog' ORDER BY id DESC");
|
прикрепил файл с выводом изображений, тобы вы имели представлние | |
|
|
|
|
|
|
|
для: admin
(04.06.2013 в 13:36)
| | Лучше бы Вы часть дампа таблицы показали.
Ну да ладно. Предположим, что артикул находится в поле artikul.
На уровне БД могу предложить такую сортировку:
SELECT *
FROM( SELECT *, CHAR_LENGTH(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(artikul
,'0','')
,'1','')
,'2','')
,'3','')
,'4','')
,'5','')
,'6','')
,'7','')
,'8','')
,'9',''))l FROM tbl )t
ORDER BY left(artikul,l),cast(substr(artikul,l+1) as unsigned)
|
Если нет - то придется сортировать в PHP. Но сомневаюсь, что это будет быстрее. | |
|
|
|
|
|
|
|
для: Sfinks
(04.06.2013 в 15:29)
| | PS. Но, если для Вас принципиально, чтобы сортировалось именно так:
BM121025
BM121035
BM131034
BM1110019
BM1110087
| , а вот так:
BM1110019
BM1110087
BM121025
BM121035
BM131034
| не приемлемо, то правильнее, конечно, хранить артикул в 2ух полях: в одном буквенную часть, в другом цифровую. | |
|
|
|
|
|
|
|
для: Sfinks
(04.06.2013 в 15:39)
| | спасибо, сейчас попробую! | |
|
|
|