Фильтрация сообщений в запросе, если у них есть только один определенный тег

Запрос сообщений WordPress по их тегам может выглядеть следующим образом (если я правильно собрал все вместе - я удалил ненужные части из запроса):

SELECT wposts.ID AS ID,
wposts.post_title, wposts.post_status, wposts.post_name,
tag_terms.term_id AS tag_id

FROM `wp_posts` AS wposts

INNER JOIN wp_term_relationships AS tag_term_relationships ON (wposts.ID = tag_term_relationships.object_id)
INNER JOIN wp_term_taxonomy AS tag_term_taxonomy ON (tag_term_relationships.term_taxonomy_id = tag_term_taxonomy.term_taxonomy_id AND tag_term_taxonomy.taxonomy = 'post_tag')
INNER JOIN wp_terms AS tag_terms ON (tag_term_taxonomy.term_id = tag_terms.term_id)

WHERE wposts.ID = '12345'

AND wposts.post_type = 'post'

AND wposts.post_status NOT LIKE 'private'

AND tag_terms.term_id = '55'

GROUP BY wposts.ID
ORDER BY wposts.post_date ASC

Это должно запрашивать все сообщения с тегом id 55.

Что мне нужно сделать, так это отфильтровать все сообщения, которые содержат только этот единственный тег, но не содержат других тегов.

Итак, я хочу показать сообщение, если в нем есть теги 23,34,55,67. Но я не хочу показывать сообщение, если в нем есть тег 55 (и нет других тегов). Посты, не содержащие этого тега, также должны быть включены в запрос.

Как мне это сделать?

6
задан reggie 12 February 2012 в 09:54
поделиться