Het volgende zou moeten werken.
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;
Als u wilt dat er meer dan twee tags overeenkomen, kunt u deze eenvoudig toevoegen. Vergeet niet om de 2 . te wijzigen in de HAVING clausule.
Ik nam aan dat alle rijen in tagXmedia zijn uniek. Als dat niet het geval is, moet u DISTINCT . toevoegen naar de COUNT onderdeel.