Para verificar se um título tem AMBOS 'categoria1' e 'categoria2', você pode usar a seguinte consulta SQL:
SELECT title
FROM post
JOIN tag ON post.post_id = tag.post_id
WHERE tag.tag_id IN (SELECT tag_id FROM tag WHERE tag = 'category1')
AND tag.tag = 'category2';
Para verificar outras categorias, basta repetir a cláusula WHERE:
SELECT title
FROM post
JOIN tag ON post.post_id = tag.post_id
WHERE tag.tag_id IN (SELECT tag_id FROM tag WHERE tag = 'category1')
AND tag.tag_id IN (SELECT tag_id FROM tag WHERE tag = 'category2')
AND tag.tag = 'category3';
Isso retornaria resultados para títulos que têm todas as 3 categorias.