Je suppose qu'il vous manque le EXISTS
clause.
La requête suivante sélectionne toutes les catégories pour lesquelles au moins une ligne existe dans la table de croisement.
SELECT category_name
FROM categories c
WHERE EXISTS (
SELECT 1
FROM assigned_cat ac
WHERE ac.category_id = c.category_id
)