如何通过特定行值从另一个表和顺序内部连接?

时间:2017-09-05 10:47:30

标签: php mysql wordpress

在WordPress中,有2个表: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是" order"然后按wp_termmeta的meta_value排序,而不是当前的名称。

如何使用当前查询执行此操作?

1 个答案:

答案 0 :(得分: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匹配,然后确保连接行的元键实际上是“顺序”。