我正在尝试通过以下查询获取分配给WordPress数据库中帖子的类别。
但是,prod_Hats
肯定没有分配给帖子(通过Wordpress UI进行检查),但是,它会随此查询一起返回。
我还发现奇怪的是prod_Hats行在term_taxonomy_id
和term_id
的值中不匹配,因为我根据这些列值的相等性显式地加入了表。
我的查询有什么问题?
select wt.name,wt.slug,wtr.term_taxonomy_id,wtt.term_id,wtt.taxonomy from
wp_term_relationships wtr
INNER JOIN wp_term_taxonomy wtt ON wtt.term_taxonomy_id=wtr.term_taxonomy_id AND wtt.taxonomy='category'
INNER JOIN wp_terms wt ON wt.term_id=wtt.term_taxonomy_id
where wtr.object_id=10
结果:
name slug term_taxonomy_id term_id taxonomy
Must read must-read 4 4 category
Tips tips 9 9 category
english english 20 20 category
prod_Hats prod_hats 73 72 category
此外,我添加并分配给此帖子的一些新类别根本不会通过此查询返回。
答案 0 :(得分:1)
查看查询我必须做类似的事情(不在数据库附近确认),我的联接是这样的:
FROM wp_posts p
LEFT JOIN wp_term_relationships tr ON p.ID = tr.object_id
LEFT JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
LEFT JOIN wp_terms t on tt.term_id = t.term_id
我看到的差异在你的行上
INNER JOIN wp_terms wt ON wt.term_id=wtt.term_taxonomy_id
我使用的是term_id
,而不是term_taxonomy_id