2013-04-12 42 views
0

我有自定义分类,根据“系列”包含的是也存在于术语“媒体类型”下的员额和地方的媒体类型是term_id列出条款16.自定义的SQL查询ORDER BY term_order

我要订购列表通过术语表中的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 
     );" 
); 

回答

1

它看起来像你的订单是嵌套在select IN(...)子句中。尝试将关闭括号了线留在外部子句term_order部分:

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

正因为如此,你订购这是不会改变的顺序的项目是IN子句的结果实际上回到你身边。

注意:我原来的帖子错误地说“移动右括号和分号上一行”。你只需要移动圆括号。如果您移动分号,则会提前终止SQL。对不起!

+0

我做ORDER BY {$ wpdb->条款} .term_order在第一个结束标记之后);但它显示一个空数组 – izharbuen

+0

你可以发表你说的查询返回一个空数组吗? – Dave

+0

我使用回声“

"; print_r($q_result); echo "
”;查看查询结果。我没有尝试发布。 – izharbuen

0

已经回答there 在你的情况你是指ORDER BY {$wpdb->terms}.term_order和默认wordpresswp_terms表中没有此列term_order列驻留在wp_term_relationships

+0

我进入了phpMyAdmin,wp_terms表有一个名为term_order的列。我正在使用插件将数字分配给条款。 – izharbuen