Есть много вопросов, связанных с этим, но у всех одинаковый ответ на использование внутреннего соединения, который (я думаю) невозможен здесь. (скажите мне, если я ошибаюсь)
То, что я делаю сейчас, вызывает два разных запроса mysql для получения результата. Он работает отлично.
$db->query("SELECT * FROM `meta` WHERE `metakey` = 'category_order'"); $order = $db->fetch_assoc()['metavalue']; /*$order = 2,1,12,11,10*/ $db->query("SELECT * FROM `categories` WHERE `parent` = '0' ORDER BY field(ID, $order)"); $cats = $db->fetch();
Теперь, чтобы уменьшить количество запросов, я попробовал что-то вроде,
$db->query("SELECT * FROM `categories` WHERE `parent` = '0' ORDER BY field(ID, (SELECT 'metavalue' FROM `meta` WHERE `metakey` = 'category_order'))");
Он не показывает никаких ошибок, но это дает мне неправильный вывод. Есть какой-либо способ сделать это?
РЕДАКТИРОВАТЬ
структура таблицы категорий,
_________________ | ID | name | ----------------- | 1 | A | | 2 | B | | 11 | C | | 12 | D | | 10 | E | -----------------
структура мета-таблицы,
______________________________________ | ID | metakey | metavalue | -------------------------------------- | 1 | category_order | 2,1,12,11,10 | --------------------------------------