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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Сортировка средствами MySQL
 
 автор: Николай Законов   (12.10.2006 в 22:51)   письмо автору
 
 

Не могу понять, кто глупее я или СУБД.
Сортировки средствами 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?
Заранее благодарю за помощь.

   
 
 автор: cheops   (13.10.2006 в 01:18)   письмо автору
 
   для: Николай Законов   (12.10.2006 в 22:51)
 

Хм... а что-то никакого сбоя не видно, здоровая алфавитно-цифровая сортировка...

   
 
 автор: slonik   (13.10.2006 в 01:36)   письмо автору
 
   для: 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

   
 
 автор: Николай Законов   (13.10.2006 в 08:19)   письмо автору
 
   для: slonik   (13.10.2006 в 01:36)
 

Да именно так. Чтобы номера моделей тоже сортировались по порядку.
Возможно ли такое при типе VARCHAR?
По идее коды каждой цифры тоже идут по порядку в таблице ASCII, почему не удается сортировать числа записанные в строку?

   
 
 автор: Trianon   (13.10.2006 в 09:25)   письмо автору
 
   для: Николай Законов   (13.10.2006 в 08:19)
 

покажите, пожалуйста, код, который выводит эти данные.

   
 
 автор: cheops   (13.10.2006 в 12:42)   письмо автору
 
   для: Николай Законов   (13.10.2006 в 08:19)
 

1) Строка вида "Pioneer DCS-240" в таблице находится в одном столбце или модель и номер находятся в разных столбцах?
2) Не может цифра 3 быть назменена на букву З? Не могли бы вы прикрепить дамп таблицы, чтобы мы могли поэкспериментировать с ней на локальной машине?

   
 
 автор: Николай Законов   (14.10.2006 в 17:34)   письмо автору
 
   для: cheops   (13.10.2006 в 12:42)
 

1) Нет замены цифры на букву не происходило.
2) Каждое наименование товара - это строка (все в одной ячейке и слово и номер)
3) Дам базы не могу дать, к сожалению, т.к. это база крупного магазина, тем более не моего :-)
4) Скажу лишь, что магазин стоит на Shop-Script Premium 1.22.

Мне главное знать, правильно ли устроен MySQL, в теории должно ли сортироваться или такие баги имеют место быть?

На случай если не решу этот вопрос средствами MySQL, можно ли применить PHP?

Спасибо всем, за предыдущие ответы!

   
 
 автор: cheops   (14.10.2006 в 22:13)   письмо автору
 
   для: Николай Законов   (14.10.2006 в 17:34)
 

Какая версия MySQL используется и в какой операционной системе?

   
 
 автор: Николай Законов   (15.10.2006 в 15:09)   письмо автору
 
   для: cheops   (14.10.2006 в 22:13)
 

1) Версия MySQL 4.1.11 стоит на Linuxе.

Все таки, можно ли то же самое сделать на PHP?
Может не ломать голову а сделать на нем.

   
 
 автор: kasmanaft   (15.10.2006 в 18:34)   письмо автору
 
   для: Николай Законов   (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

   
Rambler's Top100
вверх

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