Сообщения — Sql-Запрос Для Получения Всех Записей, Для Которых Не Указана Категория.

  • Автор темы Scursed
  • Обновлено
  • 17, Oct 2024
  • #1

Мне нужно получить идентификаторы сообщений, для которых не указана категория (таксономия «категория»).

Сообщение включает другую таксономию.

 
 
 cat_link.term_taxonomy_id = cat_tax.term_taxonomy_id AND cat_tax.taxonomy NOT IN ('category')
 

Я получаю сообщения из кода:

SELECT distinct posts.ID FROM wp_posts AS posts LEFT JOIN wp_term_relationships AS cat_link ON cat_link.object_id = posts.ID LEFT JOIN wp_term_taxonomy AS cat_tax ON cat_link.term_taxonomy_id = cat_tax.term_taxonomy_id AND cat_tax.taxonomy NOT IN ('category') WHERE post_type = 'popular_music' AND post_status = 'publish' ORDER BY posts.ID DESC

Мой запрос выбирает желаемый тип записи

$posts = $wpdb->get_results('SELECT ...', , ARRAY_A);

Но не учитывается:

Как выбрать запись Без категории?

Scursed


Рег
07 Dec, 2005

Тем
73

Постов
232

Баллов
607
  • 25, Oct 2024
  • #2

Если я понимаю вопрос, вы ищете SQL для эквивалента

 
 
 SELECT *
FROM wp_posts AS posts

LEFT JOIN wp_term_relationships 

AS cat_link

ON cat_link.object_id = posts.ID

LEFT JOIN wp_term_taxonomy

AS cat_tax

ON cat_tax.term_taxonomy_id = cat_link.term_taxonomy_id

AND cat_tax.taxonomy = 'category'
WHERE post_type = 'post'
AND post_status = 'publish'
AND cat_link.object_id IS NULL
 

Если да, то это SQL, который создает WP_Query.

SELECT SQL_CALC_FOUND_ROWS $wpdb->posts.ID FROM $wpdb->posts WHERE 1=1 AND ( NOT EXISTS ( SELECT 1 FROM $wpdb->term_relationships INNER JOIN $wpdb->term_taxonomy ON $wpdb->term_taxonomy.term_taxonomy_id = $wpdb->term_relationships.term_taxonomy_id WHERE $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_relationships.object_id = $wpdb->posts.ID ) ) AND $wpdb->posts.post_type = 'popular_music' AND (($wpdb->posts.post_status = 'publish')) GROUP BY $wpdb->posts.ID ORDER BY $wpdb->posts.ID DESC ||answer||

SQL, который вам нужен, выглядит примерно так:

$args = array ( 'post_type' => 'popular_music', 'post_status' => 'publish', 'tax_query' => array ( array ( 'taxonomy' => 'category', 'operator' => 'NOT EXISTS', ), ), 'posts_per_page' => -1, 'orderby' => 'ID', 'order' => 'DESC', ) ; $query = new WP_Query ($args) ; echo $query->request ;
 

Elizavetapul


Рег
18 Jan, 2024

Тем
64

Постов
222

Баллов
572
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно