[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка по списку
FatCat
Подозреваю что есть какое-то простое решение, но не могу сообразить.

Есть таблица, в списке полей есть айдишник и текстовое поле.
Путем довольно сложных обсчетов в пхп получается массив айдишников, отсортированный в нужном порядке.
Запрос:
SELECT word FROM table WHERE id IN(".implode(",",$idz).")
отдает строки не в том порядке, в котором собраны айдишники...

Как бы получить строки именно в той последовательности, которая задана в массиве айдишников?


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



Спустя 5 минут, 14 секунд (11.09.2010 - 01:00) waldicom написал(а):
Есть тупой способ, но он должен работать.
Что-то типа
SELECT word FROM table WHERE id IN(".implode(",",$idz).") ORDER BY implode(",",$idz)
К сожалению не могу сказать, насколько он быстрый.

Спустя 14 минут, 1 секунда (11.09.2010 - 01:14) FatCat написал(а):
waldicom
Не понял синтаксис...
SELECT * FROM `words` WHERE id IN(1,8,4,6) ORDER BY id IN(1,8,4,6)
отдает в порядке 1,4,6,8.
Другие варианты синтаксиса кроме IN() - ошибка.

Спустя 3 минуты, 11 секунд (11.09.2010 - 01:17) waldicom написал(а):
ORDER BY (1,8,4,6)

так не идет? ща посмотрю сам

Спустя 3 минуты, 48 секунд (11.09.2010 - 01:21) waldicom написал(а):
Нет, так нельзя.
Но вот Nikitian написал, как можно
Select * from table where field1 in (10,50,100,25,1,2,1000) order by field(field1,10,50,100,25,1,2,1000)

Спустя 24 минуты, 29 секунд (11.09.2010 - 01:45) FatCat написал(а):
Ага, спасибо! Получилось.
Причем не вижу уменьшения скорости. Супер!


_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.