2017-09-05 47 views
0

在WordPress中,有两个表:wp_terms和wp_termmeta。如何从另一个表内部连接并按特定行值排序?

我目前做以下获得的条款和家长等:

$query = mysqli_query($mysqli, " 
SELECT wp_terms.term_id,wp_terms.name, wp_term_taxonomy.parent 
FROM wp_terms INNER JOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id 
WHERE wp_term_taxonomy.taxonomy = 'post-categories' 
ORDER BY name"); 

但是 - 我需要访问wp_termmeta表中,选择排在term_id是相同的,并且meta_key是“订单”然后按wp_termmeta的meta_value排序,而不是按照当前的名称排序。

我该怎么做与当前查询?

回答

1

我没有具体的WordPress的知识,而是根据你的描述,查询会这个样子(我添加表的别名是为了便于阅读,但他们没有必要):

SELECT t.term_id, t.name, tax.parent 
FROM wp_terms t 
INNER JOIN wp_term_taxonomy tax ON t.term_id = tax.term_id 
INNER JOIN wp_termmeta m ON m.term_id = t.term_id AND m.meta_key = 'order' 
WHERE tax.taxonomy = 'post-categories' 
ORDER BY m.meta_value 

最这里有趣的部分是第二次连接的连接条件,它包含两个条件:m.term_id = t.term_id AND m.meta_key = 'order' 它首先确保术语ID匹配,然后确保连接行的元键实际上是“顺序”。

+0

这工作完美,谢谢你。我现在也得到了它现在要做的事情,而在我试图在后类别之后做一个单独的WHERE子句之前,我现在看到它只需要在连接上使用AND。 – JWDev

相关问题