2013-06-12 19 views
5

Birden çok WordPress tablosu sorgulamaya çalışıyorum ve gittiğimde öğreniyorum. İşte Diğer tablolara dayalı sütunlar oluşturmak için MySQL sorgusu

bugüne kadar

İşte
SELECT 
    tr.object_id, 
    tr.term_taxonomy_id, 
    p.ID, 
    p.post_date, 
    p.post_title, 
    p.post_excerpt, 
    p.guid, 
    t.term_id, 
    t.name, 
    tt.taxonomy 
FROM 
    wp_116_term_relationships AS tr, 
    wp_116_posts AS p, 
    wp_116_terms AS t LEFT JOIN 
    wp_116_term_taxonomy as tt ON tt.term_id = t.term_id 
WHERE 
    p.post_type = 'post' 
    AND p.ID = tr.object_ID 
    AND tr.term_taxonomy_id = tt.term_taxonomy_id 
    AND p.post_date > '2013-06-01' 

Ben ne olsun ben ne (üzgünüm ben bu süpürgeyi göndermek için nasıl anlamaya could not - mantıklı umut) I do Nasıl

object_id term_taxonomy_id ID post_date post_title post_excerpt guid term_id name taxonomy 
2356  33  2356 2013-06-07 15:56:54  Test Post for Reports  http://domain.com/?p=2356 7496 Marketing Updates category 
2356  32  2356 2013-06-07 15:56:54  Test Post for Reports  http://domain.com/?p=2356 470  News Updates category 
2356  70  2356 2013-06-07 15:56:54  Test Post for Reports  http://domain.com/?p=2356 46408 Tag Test 1  post_tag 
2356  72  2356 2013-06-07 15:56:54  Test Post for Reports  http://domain.com/?p=2356 46410 Tag Test 2  post_tag 
2356  74  2356 2013-06-07 15:56:54  Test Post for Reports  http://domain.com/?p=2356 46412 Tag Test 3  post_t 

Verileri ad alanından ayırın, böylece bir post_tag öğesi bir sütundaysa (post_tag) ve eğer bir kategori ise başka bir kategoride (kategori)? Örneğin:

object_id term_taxonomy_id ID post_date post_title post_excerpt guid term_id post_tag category 
2356  33  2356 2013-06-07 15:56:54  Test Post for Reports  http://domain.com/?p=2356 7496 Marketing Updates Tag Test 1 
+0

Ben, size iki farklı kriterlerine dayalı bir şey yapmak istiyorum gibi görünüyor burada istediğini emin değilim istediğiniz yapmak bir VAKA deyimi ile oldukça yalındır olmalı kategori taksonomisindeki mesajları tespit etmek için? –

+0

Teşekkürler. Evet, yapmaya çalıştığım şey buydu. Aşağıdaki cevabı kullandım ve mükemmel çalıştı! – user1958798

cevap

3

SELECT 
    tr.object_id, 
    tr.term_taxonomy_id, 
    p.ID, 
    p.post_date, 
    p.post_title, 
    p.post_excerpt, 
    p.guid, 
    t.term_id, 
    CASE WHEN tt.taxonomy = 'category' THEN t.name ELSE NULL END AS category_name, 
    CASE WHEN tt.taxonomy = 'post_tag' THEN t.name ELSE NULL END AS post_tag_name 
    FROM 
    wp_116_term_relationships AS tr, 
    wp_116_posts AS p, 
    wp_116_terms AS t 
    LEFT JOIN wp_116_term_taxonomy as tt ON tt.term_id = t.term_id 
    WHERE 
    p.post_type = 'post' 
    AND p.ID = tr.object_ID 
    AND tr.term_taxonomy_id = tt.term_taxonomy_id 
    AND p.post_date > '2013-06-01' 
+0

Teşekkürler, teşekkürler, teşekkürler! Hiç bir SQL deneyimim yok ve saçlarımı arıyorum. Mükemmel çalıştı! – user1958798

İlgili konular