これに関連する多くの質問がありますが、内部結合を使用するという同じ答えがすべてあります。これは(私が思うに)ここでは不可能です。(間違っていたら言ってください)
私が今していることは、2 つの異なる 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 |
--------------------------------------