1) У меня есть запрос для получения идентификатора файлов, например, так:MySQL - Сортировка по полю в нескольких выберите
SELECT virtuemart_media_id
FROM __virtuemart_product_medias
WHERE virtuemart_product_id = "1"
ORDER by ordering ASC
Это дает мне некоторые язей, как 23, 7, 8, 24 и то отлично.
Затем мне нужно использовать вышеуказанные значения в другом выражении WHERE, чтобы выбрать эти файлы. Поэтому у меня есть что-то вроде этого:
SELECT file_url, virtuemart_media_id
FROM __virtuemart_medias
WHERE virtuemart_media_id IN (
SELECT virtuemart_media_id
FROM __virtuemart_product_medias
WHERE virtuemart_product_id = "1"
ORDER by ordering ASC
)
Это также работает, кроме я получил результаты файлов, которые имеют порядок: 7, 8, 23, 24 - так не в порядке 23, 7, 8, 24.
Где проблема? Похоже, что порядок внутреннего SELECT не сохраняется.
Ну, разве вы не ответили на свой вопрос? Добавьте еще один 'ORDER BY'. Но, без обид, это немного уродливый способ написать запрос. Вам может быть интересно: http://dev.mysql.com/doc/refman/5.5/en//example-maximum-column-group-row.html – fancyPants