SQL -Abfrage zum Auswählen von Beiträgen aus mehreren Kategorien
Frage
Ich habe eine Abfrage erstellt, um Beiträge in einer Kategorie auszuwählen. Funktioniert gut. Wenn ich jedoch einen Sekundärfilter hinzufügen möchte, um eine Kategorie auszuschließen, gibt die Abfrage die gleiche Ergebnismenge zurück, als ob der Sekundärkategoriefilter ignoriert wird.
Im Folgenden sollte die Abfrage alle Beiträge in Kategorie 7 auswählen und diese in Kategorie 10 ausschließen:
$querystr = "SELECT * FROM $wpdb->posts
LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE ($wpdb->term_taxonomy.term_id = 7
AND $wpdb->term_taxonomy.term_id <> 10
AND $wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->posts.post_type = 'post'
AND $wpdb->posts.post_status = 'publish')";
Kann jemand helfen?
Lösung
Ich würde die eingebaute API verwenden, wie Rarst erwähnt. Sie könnten so etwas tun:
$just_seven = new WP_Query(
array(
'category__in' => array( 7 ),
'category__not_in' => array( 10 )
)
);
Sie würden dann diese Artikel in haben $just_seven->posts
.
Wenn Sie jedoch eine direkte SQL -Anweisung verwenden müssen, würde ich vorschlagen INNER JOIN
Anstatt von LEFT JOIN
.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange