У меня есть запрос MySQL, в котором я сортирую по полю следующим образом:
"... WHERE (patterns.id IN($idsJoin)) $where
ORDER BY FIELD($idsJoin2) LIMIT 0 , $numLines";
где $idsJoin2 выглядит примерно так:
my $idsJoin = join(',',@ids);
my $idsJoin2="patterns.id, ".$idsJoin;
и "@ids это массив с номерами, которые я хочу заказать.
Дело в том, что после упорядочивания по $idsJoin2 я хочу заказать другие столбцы, например:
"WHERE (patterns.id IN($idsJoin)) $where
ORDER BY FIELD($idsJoin2), products.product, versions.version, builds.build LIMIT 0 , $numLines";
Если я помещаю эти столбцы перед ORDER BY FIELD, они сортируются ими с любой проблемой, но если они после ORDER BY FIELD, что я хочу, он просто игнорирует их и просто сортирует по инструкции ORDER BY FIELD.
Я не понимаю, почему это происходит. Есть идеи? Спасибо.
Извините, что я забыл сказать, что я решил проблему. В любом случае спасибо за ответ.
Проблема заключается в том, что она получала только одну строку в результате, поэтому было невозможно заказать другие критерии. Окончательное решение проблемы:
http://forums.devshed.com/mysql-help-4/problem-when-using-a-temporary-table-631676.html
Почему вы добавляете идентификаторы в $idsJoin2
? Разве это не должно быть 'patterns.id'
, если вы хотите заказать этот столбец?