Автор Тема: Глючная сортировка  (Прочитано 4223 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн xRUSha

  • ...
  • Постоялец
  • ***
  • Сообщений: 200
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.flashcafe.ru
Глючная сортировка
« : 17 Мая 2003, 11:50:23 »
У меня в базе есть поле (name), в котором записано 2 слова - имя и фамилия (структуру таблиц писал не я). Так вот, мне нужно сделать сортировку по алфовиту, но чтобы сортировались не  по имени (order by name) второму слову - т.е. фамилии. Возмжно ли замутить такую сортировку?
...

Оффлайн nobody

  • вроде как одушевленный
  • Постоялец
  • ***
  • Сообщений: 218
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.n0b0dy.ru
Глючная сортировка
« Ответ #1 : 19 Мая 2003, 16:04:55 »
Возможно, просто загони это все в масив (PHP) потом отреж все что стоит до пробела "%20" и его самого и сортируй как хочешь :))
.::dO_ob::.

Оффлайн FILA

  • кендер
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 2
    • Просмотр профиля
Глючная сортировка
« Ответ #2 : 19 Мая 2003, 16:29:04 »
Ну, если этот твой name разделён пробелом, то определяешь позицию пробела:

LOCATE(\' \',name)

потом используешь

SUBSTRING (name, LOCATE(\' \',name)+1)

потом делаешь сортировку

ORDER BY SUBSTRING (name, LOCATE(\' \',name)+1)

за правильность не ручаюсь, попробуй-поиграйся....

НО. ИМХО. ЭТО ИЗВРАТ!............... :)
И вечный бой, покой нам только снится...

Оффлайн xRUSha

  • ...
  • Постоялец
  • ***
  • Сообщений: 200
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.flashcafe.ru
Глючная сортировка
« Ответ #3 : 20 Мая 2003, 14:11:20 »
nobody
Цитировать
загони это все в масив

массивом не хочу, т.к. записей довольно много должно получатся, а нужно, чтоб сразу из базы нужные доставались.

FILA
Цитировать
ORDER BY SUBSTRING (name, LOCATE(\' \',name)+1)

во, это похоже то что нужно, попробую
...

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Глючная сортировка
« Ответ #4 : 20 Мая 2003, 18:45:44 »
Цитировать
ORDER BY SUBSTRING (name, LOCATE(\' \',name)+1)
хм, насколько я помню мускуль не поддерживает индекс по результату выполнения функции поэтому тормозить будет.
Добавь 2 поля и скрипт напиши который в одно запишет имя, во второе фамилию
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн xRUSha

  • ...
  • Постоялец
  • ***
  • Сообщений: 200
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.flashcafe.ru
Глючная сортировка
« Ответ #5 : 20 Мая 2003, 19:27:25 »
Макс
Цитировать
Добавь 2 поля и скрипт напиши который в одно запишет имя, во второе фамилию

Это самое правильное решение проблемы, но и самое трудоемкое. Если делать такую фишку, то придется скипты редактиравиния править и бог знает что еще.
а ORDER BY SUBSTRING (name, LOCATE(\' \',name)) (тока без +1) оказался весьма рабочим (хотя наверное и тормозным =(()
...

Оффлайн FILA

  • кендер
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 2
    • Просмотр профиля
Глючная сортировка
« Ответ #6 : 20 Мая 2003, 20:19:30 »
xRUSha
а ты ещё и хотел, чтоб он не тормозил( хотя смотря что считать тормозами - был почти аналогичный случай, почти что и не тормозил)
при такой то организации таблицы и требуемой сортировке.....
Макс
это конечно самое правильное решение.... но xRUSha просил сортировку, её и получил ))
nobody
куча данных от мускуля, то же в php - массиве плюс порезка и обработка - те же тормоза......... ИМХО

:)
И вечный бой, покой нам только снится...

Оффлайн FILA

  • кендер
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 2
    • Просмотр профиля
Глючная сортировка
« Ответ #7 : 20 Мая 2003, 20:21:13 »
Цитировать
НО. ИМХО. ЭТО ИЗВРАТ!...............

я ж предупреждал :)
И вечный бой, покой нам только снится...

Оффлайн xRUSha

  • ...
  • Постоялец
  • ***
  • Сообщений: 200
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.flashcafe.ru
Глючная сортировка
« Ответ #8 : 21 Мая 2003, 09:21:40 »
FILA
Работает, и на том спасибо. Я тоже особых тормозов не заметил
« Последнее редактирование: 21 Мая 2003, 09:35:29 от xRUSha »
...

Оффлайн FILA

  • кендер
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 2
    • Просмотр профиля
Глючная сортировка
« Ответ #9 : 21 Мая 2003, 12:52:05 »
xRUSha
Цитировать
В дагонку еще вопрос, как теперь вычленить имя - первую часть строки до пробела

аналогично сортировке - создаёшь в таблице два поля : first_name и last_name
а потом делаешь update и ложишь в  first_name name до пробела а в last_name - name после пробела
И вечный бой, покой нам только снится...

Оффлайн xRUSha

  • ...
  • Постоялец
  • ***
  • Сообщений: 200
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.flashcafe.ru
Глючная сортировка
« Ответ #10 : 21 Мая 2003, 18:32:05 »
FILA
Этот вопрос прожил минут 5 от силы. Я быстро понял, что тупанул, и отредактировал сообщение. Как быстро отвечаешь, прям тока подумать и успеваю.

Трогать структуру таблицы я не стал, т.к. свалится все остальное, а рез-й запрос получился такой:

SELECT   id_e, name,
   SUBSTRING(name, LOCATE(\' \',name)) as lname,
   SUBSTRING(name, 1, LOCATE(\' \',name)) as fname
FROM editor
WHERE (let = \'$p\') and (visible = \'true\')
ORDER BY SUBSTRING(name, LOCATE(\' \',name))
...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28