我需要从我的WordPress数据库中提取所有帖子以及相关的类别,并且不确定如何编写此查询。我已经很开心地刺了几下,希望得到帮助吗?
编辑:这是我已经尝试过的:
SELECT post_title, wpr.object_id, wp_terms.name FROM wp_terms INNER JOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id INNER JOIN wp_term_relationships wpr ON wpr.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id INNER JOIN wp_posts ON ID = wpr.object_id WHERE taxonomy = 'category' AND post_type = 'post' ORDER by post_title
这似乎可行,但是它返回1,553,我知道我的数据库中只有1343。
编辑: 不久前,我们在另一个SQL查询上做了同样的事情,发现它正在拉入修订版和其他帖子类型,但认为可以使用post_type =’post’来解决。
编辑: 查看数据库中的类别数后,我得出总数为216,如果减去1553-1343 = 216,则得出6的总数。因此,我认为这1553的总数来自wp_terms表哪些需要排除在外,并且只应显示那些活跃于已发布帖子的内容?
编辑: 另一种可能性是每个帖子可以有多个类别,因此有更多帖子的原因(1553)。那么如何将每个帖子分为多个类别?
非常感谢!
这是对我有用的最终答案。
SELECT DISTINCT post_title , post_content ,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Asking Price (US\$)' AND wp_postmeta.post_id = wp_posts.ID) AS "Asking Price (US\$)" ,(SELECT group_concat(wp_terms.name separator ', ') FROM wp_terms INNER JOIN wp_term_taxonomy on wp_terms.term_id = wp_term_taxonomy.term_id INNER JOIN wp_term_relationships wpr on wpr.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id WHERE taxonomy= 'category' and wp_posts.ID = wpr.object_id ) AS "Categories" ,(SELECT group_concat(wp_terms.name separator ', ') FROM wp_terms INNER JOIN wp_term_taxonomy on wp_terms.term_id = wp_term_taxonomy.term_id INNER JOIN wp_term_relationships wpr on wpr.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id WHERE taxonomy= 'post_tag' and wp_posts.ID = wpr.object_id ) AS "Tags" FROM wp_posts WHERE post_type = 'post' ORDER BY post_title , post_content