Если я понял, о чем вы спрашиваете,
SELECT cover.id AS cID,
cover.title AS cTitle,
cover.slug AS cSlug,
cover.image AS cImage,
cover.timestamp AS cTimestamp,
category.name AS catName,
category.slug AS catSlug,
GROUP_CONCAT(tag.tag) AS tags
FROM cover
JOIN category
ON cover.category_id = category.id
JOIN cover_tag
ON cover_tag.cover_id = cover.id
LEFT OUTER JOIN tag
ON tag.id = cover_tag.tag_id
JOIN tag T2
ON T2.id = cover_tag.tag_id AND T2.tag = 'cars'
GROUP BY cover.title
LIMIT 0, 30
Последнее объединение должно гарантировать, что cover_tag имеет тег 'cars'.
РЕДАКТИРОВАТЬ Хм, лучшее объяснение ... Изображение? Говорят, сохранено более 9000 слов. Подходящая структура для обложки с набором тегов "фото, машины, отлично" будет:
[cover] ---- [category]
|
|
|
[tag:photos] ----/ [cover_tag] ---- [T2:cars]
[tag:cars] ---/
[tag:great] --/
Для обложки с набором тегов "clown, shoes, balloon, kids_love_it" T2
не будет соответствовать, поэтому cover_tag
не будет соответствовать, поэтому cover
не будет соответствовать.