2012-10-25 19 views
7

ile ayıklamak için SQL sorgusu WordPress DB'mdeki tüm mesajları ilişkili kategorilerle birlikte ayıklamam ve bu sorguyu nasıl yazacağımı bilmem. Şimdiye kadar hiç sevinçten yoksun birkaç yardım bıçağı aldım ve yardımın değerini biliyor muyuz?Tüm WordPress yazılarını

DÜZENLEME: İşte denediniz ne:

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 

Bu iş gibi görünüyor ama ben sadece benim DB 1343 var biliyorum, 1,553 döndürür.

DÜZENLEME: Biz başka bir SQL sorgusunu aynı şey biraz önce yaptım ve = 'sonrası' o revizyonlar ve diğer post türlerinde çekiyordu ettiğini fakat POST_TYPE kullanarak bu çözüldü düşündüm

EDIT: EDIT: DB'de kategorilerin sayısına baktığımda, 1553 - 1343 = 216 değerini çıkarırsanız, toplam sayı 216, 6 kapalı sayı ile geliyorum. Bu yüzden toplam 1553 sayısı geliyor hariç tutulması gereken wp_terms tablosundan ve sadece yayınlanan mesajlar ile aktif olanların gösterilmesi gerekir?

DÜZENLEME: diğer olasılık, her yazılan birden fazla kategori daha fazla yayın (1553) sahibi olmak için dolayısıyla nedeniniz olabilir. Peki her yayını birden çok kategoriye nasıl ayırabilirim?

Çok teşekkürler!

+0

[ne denediniz] (http://whathaveyoutried.com) şu ana kadar? sorgulamanız gereken tabloların yapısını gönderir misiniz? – Aprillion

+0

Gönderdiğiniz şeyle ilgili sorun nedir? Bir hata var mı, yoksa istediğiniz sonuçları vermiyor mu? –

+0

Herkes bir daha gözden geçirebilirse, bulgularıma yardımcı olmak için birkaç EDIT ekledim lütfen? – SixfootJames

cevap

19

Bu benim için çalışan son cevaptır.

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

Veritabanındaki etiketleri ve kategorileri almak için SQL'i paylaştığınız için teşekkürler - çok yardımcı oldu :) –

+0

Sizin için çalıştığıma sevindim. ;) – SixfootJames

+5

'VE post_status = 'yayınla'' – Xeoncross