0
私はwordpressを使用しています。ウェブサイトには多くの製品があります。ページには低価格から高価格、高価格から低価格の価格ソートフィルターがあります。IN()を使用した2つのSQLクエリのUNION - ORDER BYが正しく機能していません
価格は数字ではなく、単なるテキスト(例:P.O.R)の商品があります。どちらの場合も、結果の最後にこれらの製品が必要です。
私のコードでは、get_posts()などではなくsqlクエリを使用する必要があります。したがって、2つのクエリを作成しました。最初のクエリでは、テキストではない製品を取得しています。テキストが付いた製品を得る(最後になるように2番目のクエリでそれを行う)。ここに私のコードです:
$sql1 = "SELECT * FROM wp_posts AS table1 INNER JOIN (SELECT * FROM wp_postmeta WHERE
meta_key = 'product_price' AND meta_value != 'P.O.R.' order by (meta_value + 0) ASC) AS
table2 ON table1.ID = table2.post_id WHERE table1.ID IN ($currentActiveProductIds) AND
table1.post_type = 'product-items' AND table1.post_status = 'publish'";
$sql2 = "SELECT * FROM wp_posts AS table1 INNER JOIN (SELECT * FROM wp_postmeta WHERE
meta_key = 'product_price' AND meta_value = 'P.O.R.') AS table2 ON
table1.ID = table2.post_id WHERE table1.ID IN ($currentActiveProductIds)
AND table1.post_type = 'product-items' AND table1.post_status = 'publish'";
$sql = $sql1." UNION ".$sql2;
問題は、順序正しく動作していないということです。それは、私が最初のクエリだけを残したときのように、両方のケースで適切に順序付けされているので、2番目のクエリのためです。
参加を使用しているときに、内側のクエリで順を使用することはできません
?だから、あなたがorderby部分をやったところで、私はそれを見ませんか? @Lalit choudhary – aidadev
あなたは最後のクエリで "order by"を使用することができます –
私はそれを試みましたが、それは動作していません – aidadev