0

数値である「wpcf-range」と呼ばれる特定の変数でリストを並べ替えようとしていますが、ASC をリストする必要があります。これは WordPress Web サイト用ですが、以前の開発者は WordPress の方法ではなく MySQL ステートメントを使用していたため、初心者の脳が混乱しました。以下のコードを参照してください。どんな助けでも大歓迎です...

$listing = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS * FROM wp_posts INNER JOIN wp_term_relationships ON wp_term_relationships.object_id = wp_posts.ID WHERE wp_term_relationships.term_taxonomy_id = '" . $term->term_taxonomy_id . "' LIMIT " . $start . ", " . $limit);
4

2 に答える 2

0

wpcf-rangeがテーブル内の列である場合、SQL クエリ テキストの句の前に句を追加wp_postsできます。ORDER BYLIMIT

... $term->term_taxonomy_id . "' ORDER BY `wpcf-range` LIMIT " . $start . ...
                                 ^^^^^^^^^^^^^^^^^^^^^^

(注: 列名にダッシュが含まれているのは少し奇妙です。そのため、これがwp_posts表の列ではない可能性があると思われます。ダッシュが含まれている場合は、列への参照を囲む必要があります。そうしないと、MySQL はそのダッシュを減算演算子として認識します。

のデータ型がwpcf-range数値型ではなく文字型の場合、ゼロを追加して数値にキャストできます...

ORDER BY `wpcf-range`+0

それがテーブル内の列の名前ではない場合(そして、質問で提供された情報からはわかりません...それが列名であることを意図している場合、または式であることを意図している場合...できませんwp_posts に と という名前の 2 つの数値列が含まれwpcfrangeいるかどうかを確認します。意味するのは、一方を他方から減算することであり、結果セットを結果の値で並べ替えるということです。たとえば、

ORDER BY `wpcf` - `range`

これが一意でない場合は、ORDER BY に他の列を含めて、結果セットの順序が決定論的になるようにすることもできます。

ORDER BY `wpcf` - `range`, post_id
于 2013-02-14T16:17:16.197 に答える
0
$listing = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS * FROM wp_posts INNER JOIN wp_term_relationships ON wp_term_relationships.object_id = wp_posts.ID WHERE wp_term_relationships.term_taxonomy_id = '" . $term->term_taxonomy_id . "' ORDER BY wpcf-range ASC LIMIT " . $start . ", " . $limit);
于 2013-02-14T16:17:50.070 に答える