Six*_*mes 9 mysql sql wordpress posts
我需要从我的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
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但它返回1,553,我知道我的数据库中只有1343.
编辑: 我们在不久前在另一个SQL查询上做了同样的事情,发现它正在引入修订版和其他帖子类型,但认为这是使用post_type ='post'解决的
编辑: 在查看数据库中的类别数量时,如果您减去1553 - 1343 = 216,我会得到总数216,数字6,所以我认为这个总数为1553来自wp_terms表哪些需要被排除,只有那些在已发布帖子中有效的那些应该被显示出来?
编辑: 另一种可能性是每个帖子可以有多个类别,因此有更多帖子的原因(1553).那么我怎样才能将每个帖子分成多个类别?
非常感谢!
Six*_*mes 22
这是对我有用的最终答案.
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13363 次 |
| 最近记录: |