MySQL, get rows for non-matching reference or reference does not exist in other table
SELECT c.category_id
FROM category c
LEFT JOIN type_match t ON c.category_id = t.category_id AND t.type_id = 3
WHERE t.category_id IS NULL


Or the same in NOT EXISTS form:

SELECT category_id
FROM category c
WHERE NOT EXISTS ( SELECT NULL
                   FROM type_match t 
                   WHERE c.category_id = t.category_id 
                     AND t.type_id = 3 )