Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод данных / 8 сообщений из 8, страница 1 из 1
11.01.2005, 13:00
    #32858873
Boik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных
Как можно сделать так чтобы данные из базы выводились в нужном порядке, например:

SELECT * FROM table WHERE id IN(9, 4, 5, 12, 1);
выводит данные в порядке возрастания id 1, 4, 5, 9, 12

А мне хотелось бы, чтобы выводились в том порядке в котором они написаны в запросе , 4, 5, 12, 1.

Возможно ли такое осуществить?
...
Рейтинг: 0 / 0
13.01.2005, 13:22
    #32863095
Biz0N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных
Нужный порядок обычно задается в ORDER BY.
Но такого порядка как идет_в_базе не существует.
Можно узнать, зачем это нужно?
Обычно программисту не интересно как данные идут в базе.
...
Рейтинг: 0 / 0
13.01.2005, 15:56
    #32863540
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных
Если нужна нестандартная сортировка, то используется следующая техника. В SELECT вставляется дополнительный столбец, в котором подставляется значение, подходящее для сортировки, а потом делается ORDER BY по этому столбцу. Как получить это значение, зависит от задачи. Например, в данном случае в Oracle (соответствующую функцию в MySQL не помню) я бы написал так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT ...., DECODE(id,   9 ,  1 ,
                                   4 ,  2 ,
                                   5 ,  3 ,
                                  12 ,  4 , 
                                    1 ,  5 ) AS Ord1
......
ORDER BY Ord1
...
Рейтинг: 0 / 0
20.01.2005, 18:36
    #32875724
Boik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных
Есть ещё варианты?
...
Рейтинг: 0 / 0
20.01.2005, 18:39
    #32875727
RFT
RFT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных
tru55Например, в данном случае в Oracle (соответствующую функцию в MySQL не помню) я бы написал так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT ...., DECODE(id,   9 ,  1 ,
                                   4 ,  2 ,
                                   5 ,  3 ,
                                  12 ,  4 , 
                                    1 ,  5 ) AS Ord1
......
ORDER BY Ord1


В MySQL это IF, если мне память не отшибло:-)
...
Рейтинг: 0 / 0
02.05.2005, 21:41
    #33045150
Reals
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных
Здравствуйте!

Помогите пожалуйста решить эту задачу (см. первый пост).
Может все-таки кто подскажет, как можно сделать такой вывод как указан в первом посте?

Заранее благодарен!

_____________
С Уважением,
<BR>Tolik (Reals).
...
Рейтинг: 0 / 0
03.05.2005, 00:14
    #33045221
ap99ap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных
create temporary table x ( id int, primary key(id) );
insert into x (id) values (9), (4), (5), (12), (1);
select * from x left join table t on t.id = x.id;

Временная таблица будет размещена в памяти и джойн будет быстрым.

Другое дело что совершенно непонятно зачем это может быть нужно вообще...
...
Рейтинг: 0 / 0
03.05.2005, 12:45
    #33045900
Reals
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных
Супер!
Спасибо огромное. Все работает!

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


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