2012-10-25 66 views
7

我需要從我的WordPress DB中提取所有帖子以及關聯的類別,不確定如何編寫此查詢。我已經採取了一些刺激已經沒有喜悅,並會感謝幫助?SQL查詢提取所有類別的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 

這似乎是工作,但它會返回1553,我知道我只是在我的數據庫中有1343。

編輯: 我們做了另一個SQL查詢同樣的事情,前一陣,發現它在修訂及其它文章類型拉動,但認爲這是解決使用post_type =「後」

編輯: 一旦在數據庫中查看類別的數量,我想出總數爲216,如果你減去1553 - 1343 = 216,關閉的數字是6。所以我認爲這個總數爲1553從需要被排除的wp_terms表中,只有那些已經發布的帖子才能被顯示?

編輯: 另一種可能性是,每個柱可以具有多個類別,因此對於具有更多內容(1553)的原因。那麼我怎樣才能將每個帖子分成多個類別呢?

非常感謝!

+0

[你有什麼試過](http://whathaveyoutried.com)到目前爲止?你能發表你需要查詢的表格結構嗎? – Aprillion

+0

你發佈的內容有什麼問題?它是否有錯誤,或者沒有返回你想要的結果? –

+0

我已經添加了幾個編輯來幫助我的發現,如果任何人都可以再看一遍嗎? – SixfootJames

回答

19

這是爲我工作的最終答案。

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 
+2

感謝分享SQL以從數據庫中獲取標籤和類別 - 幫助了很多:) –

+0

很高興爲您效力。 ;) – SixfootJames

+5

'AND post_status ='publish'' – Xeoncross

相關問題