imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 26.11.2006, 16:34     # 1
Face
Junior Member
 
Аватар для Face
 
Регистрация: 09.08.2005
Адрес: Свердловская область
Сообщения: 112

Face Известность не заставит себя ждать
Нестандартная сортировка mysql

Есть такая структура таблицы:
Код:
CREATE TABLE `123` (
  `id` int(11) NOT NULL auto_increment,
  `text` text NOT NULL,
  PRIMARY KEY  (`id`)
) AUTO_INCREMENT=6 ;

INSERT INTO `123` VALUES (1, '10. Текст');
INSERT INTO `123` VALUES (2, '2. Текст');
INSERT INTO `123` VALUES (3, '1. Текст');
INSERT INTO `123` VALUES (4, '11. Текст');
INSERT INTO `123` VALUES (5, '20. Текст');
Возможно ли сделать mysql-запрос, чтобы записи вышли в таком порядке: "1. Текст", "2. Текст", "10. Текст", "11. Текст", "20. Текст"?
Face вне форума  
Старый 26.11.2006, 21:26     # 2
Merlin Cori
Moderator
 
Аватар для Merlin Cori
 
Регистрация: 29.04.2002
Адрес: Moscow
Пол: Male
Сообщения: 2 980

Merlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБог
Merlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБог
Так нельзя.
Можно так:
PHP код:
CREATE TABLE `124` (
  `
idint(11NOT NULL auto_increment,
  `
numint(11NOT NULL,
  `
texttext NOT NULL,
  
PRIMARY KEY  (`id`)
AUTO_INCREMENT=;

INSERT INTO `124VALUES (110'10. Текст');
INSERT INTO `124VALUES (22'2. Текст');
INSERT INTO `124VALUES (31'1. Текст');
INSERT INTO `124VALUES (411'11. Текст');
INSERT INTO `124VALUES (520'20. Текст'); 
и, соответственно, запрос будет выглядеть так:

PHP код:

SELECT 
FROM `124ORDER BY inet_aton(num
и результат выполнения запроса будет нужным
Изображения
Тип файла: jpg 1.jpg (27.9 Кбайт, 14 просмотров - Кто скачивал? )
__________________
Есть две бесконечные вещи, Вселенная и глупость.
Впрочем, на счет Вселенной, я не уверен



Вклад IMHO.WS в медицину и науку
Присоединяйтесь!!!!!

Последний раз редактировалось Merlin Cori; 27.11.2006 в 00:52.
Merlin Cori вне форума  
Старый 26.11.2006, 22:13     # 3
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Можно попробовать и не менять текущую структуру, если в ORDER BY добавлять лидирующих нулей/пробелов, и обрезать результат справа до равной длины строк. Что то вроде ORDER BY RIGHT('0000000000'+text, 100).
ЕЖ вне форума  
Старый 27.11.2006, 20:05     # 4
max2k1
Guest
 
Сообщения: n/a

А не проще ли вот так:
PHP код:
select from `123order by 0+text 
Если text всегда будет начинаться с /^\d\./ - все будет успешно сортироваться

Код:
mysql> select * from `123` order by 0+text;
+----+-----------+
| id | text      |
+----+-----------+
|  3 | 1. Текст  |
|  2 | 2. Текст  |
|  1 | 10. Текст |
|  4 | 11. Текст |
|  5 | 20. Текст |
+----+-----------+
5 rows in set (0.01 sec)
 
Старый 28.11.2006, 22:25     # 5
<Descriptor>
Junior Member
 
Регистрация: 27.09.2004
Сообщения: 51

<Descriptor> Путь к славе только начался
А можно ли сортировать по полю с текстом (в котором html-код) так, чтобы теги не учитывались, а учитывался только сам текст?
<Descriptor> вне форума  
Старый 28.11.2006, 23:05     # 6
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
<Descriptor>, можно, но медленно и большая нагрузка будет, поэтому лучше не надо. Сортируй по полю, в котором теги вырезаны, регулярные выражения для этого поддерживаются http://mysql.org/doc/refman/5.1/en/regexp.html

И вообще, какой в этом может быть практический смысл??
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 29.11.2006, 02:09     # 7
<Descriptor>
Junior Member
 
Регистрация: 27.09.2004
Сообщения: 51

<Descriptor> Путь к славе только начался
О, спасибо. А регулярные выражения только начиная с 5й версии действуют? Или для 4й тоже можно использовать?
<Descriptor> вне форума  
Старый 29.11.2006, 13:22     # 8
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Да в 3.х уже были, боюсь соврать, но вроде изначально http://mysql.org/doc/refman/4.1/en/regexp.html
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 11:27.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.