Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> "Сложная" сортировка таблицы
MailRes  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 217
Пользователь №: 19846
На форуме: 7 лет, 13 дней
Карма:




Всем привет!

Есть таблица "table" и колонка "name" и 6 строк:
"яблоко 1; помидор Д"
"яблоко 2; помидор Е"
"яблоко 4; помидор В"
"яблоко 3; помидор А"
"яблоко 6; помидор Б"
"яблоко 5; помидор Г"

Стандартная сортировка запросом "select * from table order by name asc" выведет такой результат:
"яблоко 1; помидор Д"
"яблоко 2; помидор Е"
"яблоко 3; помидор А"
"яблоко 4; помидор В"
"яблоко 5; помидор Г"
"яблоко 6; помидор Б"

Как сделать, чтобы результат можно было вывести еще таким образом:
"яблоко 3; помидор А"
"яблоко 6; помидор Б"
"яблоко 4; помидор В"
"яблоко 5; помидор Г"
"яблоко 1; помидор Д"
"яблоко 2; помидор Е"
???

Т.е. чтобы сортировка прошла по значениям, которые после знака ";" стоят.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Winston  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9509
Пользователь №: 18161
На форуме: 7 лет, 5 месяцев, 12 дней
Карма: 552




Думаю, что можно попробовать сделать
select substring(...) as chr ... order by chr
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
MailRes  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 217
Пользователь №: 19846
На форуме: 7 лет, 13 дней
Карма:




ну, думаю, не совсем верно))) т.к. поправлю изначальную версию задачи, что поле "name" не единственное, а сортировку именно по нему надо делать, а в результатах нужны все поля, т.е. select * from

---
еще прочитал:
string SUBSTRING (str string, pos integer, len integer )

string SUBSTRING (str string FROM pos integer FOR len integer)

Возвращает подстроку строки str длиною len символов с позиции pos. Поддерживает многобайтовые символы. Вариант с "FROM " используется в синтаксисе ANSI SQL92. В функции SUBSTRING () если не указан аргумент len, то возвращает всю подстроку строки str с позиции pos.
--
Winston, если вы про эту функцию написали, то я думаю, что она не подойдет, т.к. количество символов до ";" и после будет разным.
Мне кажется это не подойдет, или я ошибаюсь? Если, да, то в чем?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Winston  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9509
Пользователь №: 18161
На форуме: 7 лет, 5 месяцев, 12 дней
Карма: 552




Ну так можно написать
select *, substring(...) as chr from
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Winston  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9509
Пользователь №: 18161
На форуме: 7 лет, 5 месяцев, 12 дней
Карма: 552




select *, substring(name, -1, 1) as chr from

Чтобы достать последнюю букву
PMСайт пользователя
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
MailRes  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 217
Пользователь №: 19846
На форуме: 7 лет, 13 дней
Карма:




ну да))) покопал еще, и вроде как получилось, спасибо Winston!

запрос сделал вида
SELECT *, SUBSTRING_INDEX(name, ';', -1) AS at FROM table ORDER BY at


И, вроде, заработало)) Пока глюков не увидел.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса