Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сортировка валют / 6 сообщений из 6, страница 1 из 1
23.09.2016, 17:57
    #39314568
Alexei772
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка валют
Здравствуйте

Таблица:

value, currency

Пример заполнения:
100, rur
100, usd
100, eur
200, eur
200, usd
300, rur

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

В голову пришел такой путь реализации задачи:

Код: sql
1.
2.
3.
4.
5.
6.
select 
* 
,IF(`currency`='usd','1',IF(`currency`='eur','2',IF(`currency`='rur','3','')))
as `sort`
from tbl
order by `sort`



Можно как-то иначе сделать?
...
Рейтинг: 0 / 0
23.09.2016, 18:02
    #39314572
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка валют
Alexei772Здравствуйте

Таблица:

value, currency

Пример заполнения:
100, rur
100, usd
100, eur
200, eur
200, usd
300, rur

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

В голову пришел такой путь реализации задачи:

Код: sql
1.
2.
3.
4.
5.
6.
select 
* 
,IF(`currency`='usd','1',IF(`currency`='eur','2',IF(`currency`='rur','3','')))
as `sort`
from tbl
order by `sort`



Можно как-то иначе сделать?

Код: sql
1.
2.
...
ORDER BY (`currency`='rur'),(`currency`='eur'),(`currency`='usd')
...
Рейтинг: 0 / 0
23.09.2016, 18:03
    #39314575
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка валют
Alexei772Можно как-то иначе сделать?Конечно. Нормализовать данные, вынеся валюты в отдельную таблицу. И там либо добавить поле порядка при сортировке, либо просто ввести данные так, чтобы данному порядку соответствовали ID-ы.
Это если не рассматривать идиотские варианты типа
Код: sql
1.
ORDER BY REVERSE(`currency`)
...
Рейтинг: 0 / 0
23.09.2016, 18:09
    #39314578
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка валют
Alexei772Здравствуйте

Таблица:

value, currency

Пример заполнения:
100, rur
100, usd
100, eur
200, eur
200, usd
300, rur

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

В голову пришел такой путь реализации задачи:

Код: sql
1.
2.
3.
4.
5.
6.
select 
* 
,IF(`currency`='usd','1',IF(`currency`='eur','2',IF(`currency`='rur','3','')))
as `sort`
from tbl
order by `sort`



Можно как-то иначе сделать?

Код: sql
1.
2.
3.
order by find_in_set(`currency`,'usd,eur,rub')

order by field(`currency`,'usd','eur','rub')
...
Рейтинг: 0 / 0
23.09.2016, 18:17
    #39314585
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка валют
Код: sql
1.
2.
3.
4.
5.
order by position(`currency`, 'usd-eur-rub');

order by locate(`currency`, 'usd-eur-rub');

order by instr(`currency`, 'usd-eur-rub');



ну и костылей накину

1) хранить кирренси ввиде
'01usd','02eur','03rub'

а при выводе срезать два знака

2)раз уж таблица всеравно денормализованна, то можно есчё и рядом с каренси хранить порядок(есчё один столбик)
...
Рейтинг: 0 / 0
23.09.2016, 18:18
    #39314586
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка валют
Alexei772Здравствуйте

Можно как-то иначе сделать?

вариантов как г%%на...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сортировка валют / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]