Myslím, že to je to, co hledáte pomocí GROUP_CONCAT :
SELECT
source.product,
GROUP_CONCAT(cat.category) cats
FROM cat
JOIN source on source.product = cat.product
GROUP BY source.product
Pokud se mezi každou kategorií snažíte dostat ,, použijte SEPARATOR s GROUP_CONCAT . Například:
GROUP_CONCAT(cat.category separator ', ')