Артем Л.
11416 сообщений
#14 лет назад
Есть такой запрос:
SELECT * FROM category WHERE id IN ($category)

Где в $category содержится 1,3,7,2,12,46,24
Может быть любое количество чисел в любом порядке

И вот значит мне нужно отсортировать в таком порядке по id как указано в $category. Можно ли как-то такое сделать?
Николай М.
1895 сообщений
#14 лет назад
Оно так и будет, выборка же и идет по In вложености, разве не так?

Если нет, то можно еще айде категорий засунуть в вложенный запрос и думаю дальше разрулите)
Артем Л.
11416 сообщений
#14 лет назад
Нет, в таком случае выборка сортируется по id
Цитата ("MMM_Corp"):
можно еще айде категорий засунуть в вложенный запрос и думаю дальше разрулите

Чего то не пойму как
Кирилл Е.
2817 сообщений
#14 лет назад


SELECT * FROM `modx_location_city` WHERE `city_id` IN (13,15,20,14,11,10) ORDER BY (case `city_id` when 13 then 1 when 15 then 2 when 20 then 3 when 14 then 4 when 11 then 5 when 10 then 6 end)


Вот как вариант (тестил своей таблицей )

Но если таких ид для выборки больше сотни - может лучше делать с результата выборки массив (в целях производительности), а потом вибирать по порядку с 13 по 10 (как у меня) и так образовать упорядоченный результат в массиве согласно нужному порядку.
Вячеслав Кремешный
92 сообщения
#14 лет назад
Можно так

SET @i=0;
SELECT *,(@i:= @i+1) as ord FROM category WHERE Active IN ($category) ORDER BY ord

Цитата ("kirilev"):
SELECT * FROM `modx_location_city` WHERE `city_id` IN (13,15,20,14,11,10) ORDER BY (case `city_id` when 13 then 1 when 15 then 2 when 20 then 3 when 14 then 4 when 11 then 5 when 10 then 6 end)


Вот как вариант (тестил своей таблицей )

Но если таких ид для выборки больше сотни - может лучше делать с результата выборки массив (в целях производительности), а потом вибирать по порядку с 13 по 10 (как у меня) и так образовать упорядоченный результат в массиве согласно нужному порядку.


ох вас и понесло
Кирилл Е.
2817 сообщений
#14 лет назад
msdn11, Ваш вариант не сортирует в порядке следования чисел как в IN (..)
Вячеслав Кремешный
92 сообщения
#14 лет назад
Не дочитал задание. Тогда еще проще

SELECT * FROM category WHERE id IN ($category) ORDER BY FIELD(id, $category)
Кирилл Е.
2817 сообщений
#14 лет назад
msdn11, о, сортирует
Вячеслав Кремешный
92 сообщения
#14 лет назад
Куда оно денется.
Артем Л.
11416 сообщений
#14 лет назад
Вот как даже... Не знал, не знал такое...
msdn11, спасибо огромное... Век живи - век учись...
Вячеслав Кремешный
92 сообщения
#14 лет назад
В мускеле полно всякого. Я вот думаю даже книжку прочитать
Да и вы мне с отзывом когда-то помогли. Вот вам вернулось. Карма