Peut-être quelque chose comme :
Qui (utilisateur connecté) consulte un sujet spécifique
-- [paramètres]
-- int :topic_id = 1
SELECT
title,
viewed_at,
tv.user_id
FROM topics t
LEFT JOIN topic_views tv
ON t.id = tv.topic_id
WHERE category_id IS NOT NULL
AND tv.user_id IS NOT NULL
AND t.id = :topic_id
ORDER BY viewed_at DESC
LIMIT 1000
Les 100 dernières vues de sujets par un utilisateur
-- [paramètres]
-- int :user_id = 1
SELECT
tv.user_id,
title,
viewed_at,
views,
t.user_id
FROM topics t
LEFT JOIN topic_views tv
ON t.id = tv.topic_id
WHERE category_id IS NOT NULL
AND tv.user_id = :user_id
ORDER BY viewed_at DESC
LIMIT 100