Я думаю, что-то вроде этого будет работать так, как вы хотите:
SELECT cat.id AS category_id,
cat.title,
top.id AS topic_id,
top.title,
user,
(
(
SELECT COUNT(*) FROM forum_categories
WHERE id = cat.id AND user IS NULL
) > 0 -- This is to check wether if any NULL is found
) as thereIsANull
FROM forum_categories as cat
JOIN forum_topics as top ON cat.id = top.category_id
LEFT OUTER JOIN forum_views as view ON top.id = view.topic_id
WHERE cat.id = 6 -- You can ofcourse change this to whatever variable your using
GROUP BY cat.id -- Just an ordinary group by category id
ORDER BY cat.id
Предполагая, что полевой пользователь найден в таблице forum_categories, в противном случае просто измените подзапрос, чтобы присоединиться к той таблице, где вы получаете пользователяиз
Обратите внимание, что Thiis в основном совпадает с тем, что написал Cez , поэтому он заслуживает некоторых кредитов, единственное отличие - это подзапрос и группировка по идентификатору категории вместо пользователя.
Попробуйте и дайте мне знать, если это было правильно:)