Следното трябва да работи.
SELECT media_id
FROM tagXmedia
WHERE tag_id IN (SELECT id FROM tag WHERE name IN ('home','hawaii'))
GROUP BY media_id
HAVING COUNT(tag_id) = 2;
Ако искате да съвпадат с повече от два етикета, можете лесно да ги добавите. Просто не забравяйте да промените 2 в HAVING
клауза.
Предполагам, че всички редове в tagXmedia
са уникални. В случай, че не са, ще трябва да добавите DISTINCT
към COUNT
част.