MySQL-Abfrage zum Erstellen von Spalten basierend auf anderen Tabellen

Lesezeit: 2 Minuten

Benutzer-Avatar
Benutzer1958798

Ich versuche, mehrere WordPress-Tabellen abzufragen, und ich habe dabei gelernt.

Hier ist, was ich bisher habe

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 bekomme (sorry, ich konnte nicht herausfinden, wie ich diesen Reiniger posten soll – hoffe, es macht Sinn)

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 trenne ich die Daten vom Namensfeld, sodass es sich bei einem post_tag in einer Spalte (post_tag) und bei einer Kategorie in einer anderen (category) befindet? 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

  • Ich bin mir nicht sicher, was Sie hier wollen, Sie scheinen etwas basierend auf zwei verschiedenen Kriterien tun zu wollen. Möchten Sie Beiträge in der Kategorie Taxonomie erkennen?

    – Mathieu Dumoulin

    12. Juni 2013 um 19:10 Uhr

  • Vielen Dank. Ja, das war, was ich versuchte zu tun. Ich habe die Antwort unten verwendet und es hat perfekt funktioniert!

    – Benutzer1958798

    12. Juni 2013 um 19:49 Uhr

Sollte mit einer CASE-Anweisung ziemlich einfach sein

   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'

  • Danke danke danke! Ich habe keine SQL-Erfahrung und habe mir die Haare ausgerissen, um danach zu suchen. Es hat perfekt funktioniert!

    – Benutzer1958798

    12. Juni 2013 um 19:48 Uhr

1345160cookie-checkMySQL-Abfrage zum Erstellen von Spalten basierend auf anderen Tabellen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy