Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > сортировка Order By


Автор: Vidocq 16.3.2005, 22:23
Трабл в чём: надо выводить на страницу содержимое столбца средствами пхп. В столбце - фамилии, ессно русским по белому smile
Так MySql не хатит их сортить по алфавиту. Буржуйский (англ) сортит классно, а отецтвенный отказывается...

Кто чего присоветует?
Заранее благодарю за участие

Автор: Irokez 16.3.2005, 22:29
что значит отказывается?
как вариант можно загнать данные в массив и отсортировать по фамилиям через array_multisort()

Автор: Vidocq 16.3.2005, 22:41
Irokez
Цитата

что значит отказывается?

Выводит в произвольном порядке.

Цитата

загнать данные в массив и отсортировать по фамилиям через array_multisort()

Вот и мне такая идея приходила.
Так а ты не сталкивался с подобной траблой? Может это какой-то баг в MySql (кстати, версия 4.0.16 - по моему...)? Может попробовать более новую вершн?

Автор: Irokez 16.3.2005, 22:52
сталкивался, один раз на хостинге было, потом я хостинг сменил (по другой причине)
проблема кажется в настройках локали MySQL, если честно не знаю как настроить на нужную локаль, щас покапаюсь, может найду. Но по-моему тут дело не в версии мускула

Автор: Vidocq 16.3.2005, 23:00
Irokez
а где рыться?
В общем, если что-то будет - с меня много плюсов! ;)

Автор: Irokez 16.3.2005, 23:05
рыться в доках =)
http://dev.mysql.com/doc/mysql/en/index.html

Автор: HalkaR 16.3.2005, 23:14
Установи правильную кодировку таблицы и столбца
http://dev.mysql.com/doc/mysql/en/charset-table.html
http://dev.mysql.com/doc/mysql/en/charset-column.html
Добавлено @ 23:18
Код
CREATE TABLE Table1
(
    column1 VARCHAR(5) CHARACTER SET cp1251 COLLATE cp1251_general_ci
);

Добавлено @ 23:19
Код
ALTER TABLE `table` CHANGE `text` `text` TEXT CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL 

Автор: Irokez 16.3.2005, 23:23
попробуй запрос:
Код

set global character_sets_dir = d:/apache/mysql/share/russian

d:/apache/mysql/ - путь до папки с mysql

Автор: Vidocq 16.3.2005, 23:26
HalkaR
пасиба.
Буду пробовать...

Irokez
аналогично smile

Автор: Mal Hack 17.3.2005, 00:03
BINARY либо при поиске, либо у стобца, где есть русский текст.

Автор: Vidocq 17.3.2005, 00:13
Mal Hack
ээээ, чего БИНАРИ? Не понял.
Если можешь, пожалста, объясни...

Автор: Irokez 17.3.2005, 07:34
Mal-hack имел в виду:
Код

select * from `table` order by binary `column`;

Автор: Vidocq 17.3.2005, 19:00
Mal Hack
Irokez

Код

select * from `table` order by binary `column`;


то, что надо. Заработало smile

Автор: Zandr 18.3.2005, 08:09
Если у тебя в windows-1251 данные хранятся - посмтри куда у тебя буква `ё` отсортируется smile и скажи нам

Автор: Mal Hack 18.3.2005, 08:11
Цитата(Zandr @ 18.3.2005, 08:09)
Если у тебя в windows-1251 данные хранятся - посмтри куда у тебя буква `ё` отсортируется smile и скажи нам

Именно поэтому букву ё часто заменяют на е smile

Автор: Zandr 18.3.2005, 08:17
Mal Hack оставим это на совести тех, кто заменяет. Мне лично порой просто лень тянуться к ней при печати. Но слово из песни, тьфу... букву из алфавита не выбросишь.......

Автор: DENNN 18.3.2005, 11:08
Цитата(Vidocq @ 17.3.2005, 19:00)
Код SQL
1:

select * from `table` order by binary `column`;


то, что надо. Заработало

Ага, только теперь заглавные и строчные буквы будут сортироваться по разному smile

Автор: Vidocq 26.3.2005, 14:06
DENNN
Ну это не так страшно smile

Автор: DENNN 28.3.2005, 09:56
Цитата(Vidocq @ 26.3.2005, 14:06)
Ну это не так страшно

Ну да, только теперь нужно либо LCASE использовать, либо честно признаваться что это "не совсем сортировка".

Автор: Kesh 30.3.2005, 16:21
Цитата(HalkaR @ 16.3.2005, 23:14)
Установи правильную кодировку таблицы и столбца
http://dev.mysql.com/doc/mysql/en/charset-table.html
http://dev.mysql.com/doc/mysql/en/charset-column.html
Добавлено @ 23:18
Код
CREATE TABLE Table1
(
    column1 VARCHAR(5) CHARACTER SET cp1251 COLLATE cp1251_general_ci
);

Добавлено @ 23:19
Код
ALTER TABLE `table` CHANGE `text` `text` TEXT CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL 

Дак вот же... именно оно...

Автор: Vidocq 30.3.2005, 22:42
Kesh
Ок

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)