Załóżmy że mam 3 tabele: posts, tags i posts_tags.
- posts ma kolumny id oraz title
- tags ma kolumny id oraz tag
- posts_tags ma kolumny post_id oraz tag_id
Jeden post może mieć przypisanych wiele tagów. Chcę wyszukać posty, które są oznaczone danymi tagami. Problem w tym, że chcę wyszukiwać pod kątem kilku tagów na raz, tzn. np szukam posta który ma jednocześnie tag "aktualności" i "święta" (

Wymodziłem coś takiego:
SELECT `posts`.`id`, `title` FROM `posts` JOIN `posts_tags` ON `posts`.`id` = `posts_tags`.`post_id` JOIN `tags` ON `posts_tags`.`tag_id` = `tags`.`id` WHERE `tag` = 'aktualnosci' AND `tag` = 'swieta' GROUP BY posts.id ORDER BY `date` DESC
To działa dla wyszukiwania jednego tagu, ale gdy chcę wyszukać dwa (jak powyżej), to zwróci pusty wynik. Nie mam pomysłu jak zrobić takie wyszukiwanie, chociaż problem wydaje się być oklepany. Próbowałem GROUP_CONCAT + HAVING LIKE - taki potworek by nawet działał, ale to raczej mało poprawne.
Z góry dziękuję za wszelką pomoc :-)