SQL-запрос для выбора записей из нескольких категорий
Я создал запрос для выбора сообщений в категории. Работает нормально. Но когда я решаю добавить дополнительный фильтр для исключения категории, запрос возвращает тот же набор результатов, как если бы фильтр дополнительной категории игнорировался.
В следующем запросе следует выбрать все сообщения в категории 7 и исключить сообщения в категории 10:
$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')";
Может ли кто-нибудь помочь?
1
1 answers
Я бы использовал встроенный API, как упоминалось ранее. Вы могли бы сделать что-то вроде этого:
$just_seven = new WP_Query(
array(
'category__in' => array( 7 ),
'category__not_in' => array( 10 )
)
);
Затем у вас будут эти предметы в $just_seven->posts
.
Однако, если вам НЕОБХОДИМО использовать прямую инструкцию SQL, я бы предложил использовать INNER JOIN
вместо LEFT JOIN
.
1
Author: John P Bloch, 2010-10-11 16:07:09