Forum Webscript.Ru

Общие => Базы данных => Тема начата: AlieN от 28 Ноября 2002, 13:57:51

Название: Сортировка char\'ov
Отправлено: AlieN от 28 Ноября 2002, 13:57:51
Вот есть таблица с неким столбцом типа char
Можно ли его отсортировать так,чтобы снала показывались записи где циферки а потом все остальное, или что-нить в таком духе?
Название: Сортировка char\'ov
Отправлено: Макс от 28 Ноября 2002, 14:10:04
если тебе ORDER chr ASC не подходит то наверное нельзя.

У тебя это поле одному символу равно? (если да, то можно в скрипте сделать хеш:
$array = array("0"=>"0","1"=>"1",...."A"=>128","B"=>128", ....);
а поле заменить на числовой тип.)
Название: Сортировка char\'ov
Отправлено: Maniac от 28 Ноября 2002, 15:05:30
У тебя записи могут содержать только циферки и только буковки, или там попадаются смешанные строки?
Если первый вариант, то, ORDER BY вернет тебе то, что нужно
Название: Сортировка char\'ov
Отправлено: AlieN от 28 Ноября 2002, 15:08:05
Maniac
Есть иногда смешанные
Макс
Поле всегда больше одного символа
Название: Сортировка char\'ov
Отправлено: Maniac от 28 Ноября 2002, 15:12:01
Цитировать
Есть иногда смешанные

Тогда тем более он тебе сначала выдаст циферки, потом слова, которые начинаются с циферок, потом слова, которые с них не начинают
Название: Сортировка char\'ov
Отправлено: AlieN от 28 Ноября 2002, 15:14:23
Цитировать
Тогда тем более он тебе сначала выдаст циферки

http://www.status.ru/search/ned_ar_search.phtml?&&rooms=&street=&ohrana=&signal=&reshet=&etaz=&balcon=&phone=&rooms=&from_metro=&san_uzel=&phone=&order=komnat&submit=yes&order=prodaza
Название: Сортировка char\'ov
Отправлено: Maniac от 28 Ноября 2002, 15:58:28
Мдя. Действительно.
Ну, если тебя не очень интересует сортировка внутри классов "только циферки" и "циферки и буквы", то можешь использовать ORDER BY right(field,1) asc
Название: Сортировка char\'ov
Отправлено: AlieN от 28 Ноября 2002, 16:14:21
Maniac гм...
теперь вообще ничего не показывает :(
Название: Сортировка char\'ov
Отправлено: Maniac от 28 Ноября 2002, 16:18:33
Надеюсь, field на свое имя поля заменил? :)
Название: Сортировка char\'ov
Отправлено: AlieN от 28 Ноября 2002, 16:29:31
Maniac
Я конечно тупой но не до такой же степени....
Название: Сортировка char\'ov
Отправлено: Maniac от 28 Ноября 2002, 16:35:56
Странно. Моя тестовая таблица, поле nechto:
12п
12
10т
5
10пт
1554

Запрос:
select nechto from news order by right(nechto,1) asc

Результат:
12
1554
5
12п
10т
10пт
Название: Сортировка char\'ov
Отправлено: AlieN от 28 Ноября 2002, 16:42:19
Maniac
Короче понятно, такого запроса не существует
оффтопик
Название: Сортировка char\'ov
Отправлено: Alexandr от 28 Ноября 2002, 16:59:03
AlieN опиши точно как должно сортироваться на примере Maniac\'а.

Щас замутим.....
Название: Сортировка char\'ov
Отправлено: Alexandr от 28 Ноября 2002, 17:11:46
Ну вот напр. первые идеи:

CREATE TEMPORARY TABLE _tmp(
my_col CHAR(255)
);
INSERT INTO _tmp VALUES (\'12\');
INSERT INTO _tmp VALUES (\'2\');
INSERT INTO _tmp VALUES (\'5n\');
INSERT INTO _tmp VALUES (\'n5n\');
INSERT INTO _tmp VALUES (\'nmm\');

SELECT my_col, my_col+0 as my_col_n, IF((my_col+0), (my_col+0), (my_col+90000)) as my_col_f FROM _tmp ORDER BY my_col_f, my_col;

Мучай.....
Название: Сортировка char\'ov
Отправлено: Alexandr от 28 Ноября 2002, 17:15:10
Ааааа....
Цитировать
http://www.status.ru/search/ned_ar_...s&order=prodaza

тебе сортировка, напр., по дальности???
Название: Сортировка char\'ov
Отправлено: Alexandr от 28 Ноября 2002, 17:25:36
Вот ещё идейка:
SELECT my_col, IF((REVERSE(my_col)+0) && (my_col+0), (my_col+0), (my_col+90000)) as my_col_f FROM _tmp ORDER BY my_col_f, my_col;
Название: Сортировка char\'ov
Отправлено: fidget от 28 Ноября 2002, 17:36:46
AlieN, если честно, то я не очень поняла что тебе нужно :-)

если у тебя есть допустим такие данные

1
10

2
в34

то как тебе надо что бы оно их отсортировало?
1
2
10

в34

или

1
2

10
в34

???
Название: Сортировка char\'ov
Отправлено: AlieN от 28 Ноября 2002, 18:05:12
ОБЪЯСНЯЮ КАКАЯ ТРЕБУЕЦА СОРТИРОВКА:
1
2
3
150
151
151т
158ж
а
аа
ббб
ввввв

Теперь понятно? :)
Название: Сортировка char\'ov
Отправлено: Metaller от 28 Ноября 2002, 18:11:03
AlieN
Лох глюкавый!!! ;)
Название: Сортировка char\'ov
Отправлено: AlieN от 28 Ноября 2002, 18:14:35
В коде был небольшой глюк,но вопрос сортировки открыт

ЗЫ: ХМЫРЬ ТЕБЕ СЕГОДНЯ НЕ ЖИТЬ
Название: Сортировка char\'ov
Отправлено: Alexandr от 28 Ноября 2002, 18:31:49
AlieN тогда так:
SELECT my_col, IF((my_col+0), (my_col+0), (my_col+90000)) as my_col_f FROM _tmp ORDER BY my_col_f, my_col;
Название: Сортировка char\'ov
Отправлено: AlieN от 28 Ноября 2002, 18:33:48
Короче все проще:
Metaller иногда бывает прав ( хотя очень очень редко;))
Вот что нужно было:
Цитировать

SELECT exl_ned_ar . * , ( 0 + metrvgod )
as NewField
FROM `exl_ned_ar`
ORDER BY NewField LIMIT 0, 30
Название: Сортировка char\'ov
Отправлено: fidget от 28 Ноября 2002, 18:39:59
> Вот что нужно было:

ну .. вообще-то это тебе даст немного не тот результат, чем ты описал ;)
но если тебе подходит .. :-))

[OFF]вам не кажется, что сегодня сдесь слишком оживленно :) [/OFF]
Название: Сортировка char\'ov
Отправлено: AlieN от 28 Ноября 2002, 19:02:44
fidget
http://www.status.ru/search/ned_ar_search.phtml?&&rooms=&street=&ohrana=&signal=&reshet=&etaz=&balcon=&phone=&rooms=&from_metro=&san_uzel=&phone=&order=komnat&submit=yes&order=metrvgod2
Думаю это то что мне было нужно
Хотя если бы буковски были бы в конце было бы лучше
Цитировать
вам не кажется, что сегодня сдесь слишком оживленно

Я сам удивлен за 4 часа 20 постов
Название: Сортировка char\'ov
Отправлено: fidget от 28 Ноября 2002, 19:21:47
AlieN , прости меня темную, но какое поле ты там сортируешь :-)

посмотри еще вот этот топик, самый последний пост:

http://www.xpoint.ru/cgi-bin/forum.cgi?action=thread&id=15682

> Я сам удивлен за 4 часа 20 постов

жизнь проболжается одним словом :-)))
Название: Сортировка char\'ov
Отправлено: AlieN от 28 Ноября 2002, 19:37:02
Цитировать
но какое поле ты там сортируешь
последнее вроде
Название: Сортировка char\'ov
Отправлено: Alexandr от 29 Ноября 2002, 15:35:32
Цитировать
Хотя если бы буковски были бы в конце было бы лучше

AlieN, я ж тебе написал как это сделать:
http://forums.webscript.ru/showthread.php?s=&postid=61799#post61799