0

「シリーズ」の下に用語をリストするカスタム分類法があります。これには、「media_type」の下の用語にも存在し、media_type が term_id 16 である投稿が含まれます。

terms テーブルの term_order 列でリストを並べ替えたいのですが、うまくいきません。

私は何を間違っていますか?

$q_result = $wpdb->get_col("
    SELECT DISTINCT {$wpdb->terms}.name 
    FROM {$wpdb->terms}
        INNER JOIN {$wpdb->term_taxonomy} 
            ON {$wpdb->term_taxonomy}.term_id = {$wpdb->terms}.term_id
        INNER JOIN {$wpdb->term_relationships} 
            ON {$wpdb->term_taxonomy}.term_taxonomy_id = {$wpdb->term_relationships}.term_taxonomy_id
    WHERE {$wpdb->term_taxonomy}.taxonomy = 'series' 
        AND {$wpdb->term_relationships}.object_id IN (
            SELECT object_id 
            FROM {$wpdb->term_relationships}
                INNER JOIN {$wpdb->term_taxonomy} 
                    ON {$wpdb->term_taxonomy}.term_taxonomy_id = {$wpdb->term_relationships}.term_taxonomy_id
            WHERE {$wpdb->term_taxonomy}.taxonomy = 'media_type' 
                AND {$wpdb->term_taxonomy}.term_id = '16'
            ORDER BY {$wpdb->terms}.term_order 
        );"
);
4

2 に答える 2

1

order by が select IN (...) 句内にネストされているようです。閉じ括弧を 1 行上に移動して、term_order 部分を外側の句に残してみてください。

    AND {$wpdb->term_taxonomy}.term_id = '16')
ORDER BY {$wpdb->terms}.term_order;"

そのままでは、項目が実際に返される順序を変更していない IN 句の結果を順序付けています。

注: 元の投稿では、「閉じ括弧とセミコロンを 1 行上に移動してください」と誤って記載されていました。括弧を移動するだけです。セミコロンを移動すると、SQL が早期に終了します。そのために残念!

于 2013-04-12T19:01:08.250 に答える
0

すでにそこに 回答ORDER BY {$wpdb->terms}.term_orderされていwordpress wp_termsますterm_orderwp_term_relationships

于 2013-04-12T19:41:45.910 に答える