Pokud byste měli pouze tabulku značek (ne tabulku kategorií), je to optimalizovanější začátek:
SELECT article_id,count(*) AS q
FROM article_tags
WHERE id_tag IN (
SELECT id_tag
FROM article_tags
WHERE article_id=41
)
AND article_id!=41
GROUP BY article_id
ORDER BY q DESC