Chyba brakuje Ci EXISTS
klauzula.
Poniższe zapytanie wybiera wszystkie kategorie, dla których w tabeli przecięcia istnieje co najmniej jeden wiersz.
SELECT category_name
FROM categories c
WHERE EXISTS (
SELECT 1
FROM assigned_cat ac
WHERE ac.category_id = c.category_id
)