|
|
|
| Не могу понять, кто глупее я или СУБД.
Сортировки средствами SQL: ASC и DESC не выполняются на должном уровне.
Нажимаю на ссылку сортировать товары по имени - ан нет сортирует но просматриваются
небольшие ошибки.
Т.е. некоторые товары влезают не туда, привожу пример:
Pioneer DCS-240
Pioneer DCS-333
Pioneer DCS-340
Pioneer DCS-525
Pioneer DCS-535
Pioneer DCS-353
Pioneer DCS-360
Pioneer NS-DV1000
Pioneer RCS-9H
Pioneer RCS-606H
Pioneer RCS-404H
Pioneer XV-DV240
Pioneer XW-HTD525
|
Как видно, сортировка как-будто сбивается..
Может она не предназначена для буквенно численных сортировок..
Можно ли обой это средствами PHP?
Заранее благодарю за помощь. | |
|
|
|
|
|
|
|
для: Николай Законов
(12.10.2006 в 22:51)
| | Хм... а что-то никакого сбоя не видно, здоровая алфавитно-цифровая сортировка... | |
|
|
|
|
|
|
|
для: cheops
(13.10.2006 в 01:18)
| | Я так понимаю, автор хочет чтобы у первых пионеров сортировались по порядку и номера моделей:
Не так:
Pioneer DCS-240
Pioneer DCS-333
Pioneer DCS-340
Pioneer DCS-525
Pioneer DCS-535
Pioneer DCS-353
Pioneer DCS-360
а так:
Pioneer DCS-240
Pioneer DCS-333
Pioneer DCS-340
Pioneer DCS-353
Pioneer DCS-360
Pioneer DCS-525
Pioneer DCS-535 | |
|
|
|
|
|
|
|
для: slonik
(13.10.2006 в 01:36)
| | Да именно так. Чтобы номера моделей тоже сортировались по порядку.
Возможно ли такое при типе VARCHAR?
По идее коды каждой цифры тоже идут по порядку в таблице ASCII, почему не удается сортировать числа записанные в строку? | |
|
|
|
|
|
|
|
для: Николай Законов
(13.10.2006 в 08:19)
| | покажите, пожалуйста, код, который выводит эти данные. | |
|
|
|
|
|
|
|
для: Николай Законов
(13.10.2006 в 08:19)
| | 1) Строка вида "Pioneer DCS-240" в таблице находится в одном столбце или модель и номер находятся в разных столбцах?
2) Не может цифра 3 быть назменена на букву З? Не могли бы вы прикрепить дамп таблицы, чтобы мы могли поэкспериментировать с ней на локальной машине? | |
|
|
|
|
|
|
|
для: cheops
(13.10.2006 в 12:42)
| | 1) Нет замены цифры на букву не происходило.
2) Каждое наименование товара - это строка (все в одной ячейке и слово и номер)
3) Дам базы не могу дать, к сожалению, т.к. это база крупного магазина, тем более не моего :-)
4) Скажу лишь, что магазин стоит на Shop-Script Premium 1.22.
Мне главное знать, правильно ли устроен MySQL, в теории должно ли сортироваться или такие баги имеют место быть?
На случай если не решу этот вопрос средствами MySQL, можно ли применить PHP?
Спасибо всем, за предыдущие ответы! | |
|
|
|
|
|
|
|
для: Николай Законов
(14.10.2006 в 17:34)
| | Какая версия MySQL используется и в какой операционной системе? | |
|
|
|
|
|
|
|
для: cheops
(14.10.2006 в 22:13)
| | 1) Версия MySQL 4.1.11 стоит на Linuxе.
Все таки, можно ли то же самое сделать на PHP?
Может не ломать голову а сделать на нем. | |
|
|
|
|
|
|
|
для: Николай Законов
(15.10.2006 в 15:09)
| | Вроде бы должно сортироваться на MySQL ...
На PHP сделать можно:
<?
$arr = array ('Pioneer DCS-240', 'Pioneer DCS-333', 'Pioneer DCS-340', 'Pioneer DCS-525', 'Pioneer DCS-535', 'Pioneer DCS-353', 'Pioneer DCS-360');
echo '<pre>';
print_r ($arr);
sort($arr);
print_r ($arr);
?>
|
(предварительно считайте "пионеров" в массив)
можно передать sort второй параметр
SORT_REGULAR - сравнивать элементы нормально (не изменять типы)
SORT_NUMERIC - сравнивать элементы в числовом отношении
SORT_STRING - сравнивать элементы как строки
http://php.net/ru/sort
|
| |
|
|
|