2013-06-12 15 views
5

Ich versuche, mehrere WordPress-Tabellen abzufragen, und ich habe gelernt, wie ich gehe.MySQL Abfrage zum Erstellen von Spalten basierend auf anderen Tabellen

Hier ist, was ich bisher

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' 

Hier ist, was ich (sorry ich nicht verstehen konnte, wie diese Reiniger zu schreiben - hoffen, dass es Sinn macht)

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 

Wie kann ich Trennen Sie die Daten vom Namensfeld, so dass, wenn es ein post_tag ist, es in einer Spalte (post_tag) ist und wenn es eine Kategorie ist, ist es in einer anderen (Kategorie)? Zum Beispiel:

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

Ich bin nicht sicher, was Sie hier wollen Sie etwas zu wollen, scheinen auf zwei verschiedenen Kriterien tun basiert, wollen Sie Posts in der Kategorie Taxonomie zu erkennen? –

+0

Danke. Ja, genau das habe ich versucht. Ich habe die Antwort unten verwendet und es hat perfekt funktioniert! – user1958798

Antwort

3

Sollte ziemlich gerade vorwärts mit einer CASE-Anweisung

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

Danke, danke, danke! Ich habe keine SQL-Erfahrung und habe meine Haare herausgezogen, um das zu suchen. Es hat perfekt funktioniert! – user1958798

Verwandte Themen