Jag tror att det är detta du letar efter med GROUP_CONCAT :
SELECT
source.product,
GROUP_CONCAT(cat.category) cats
FROM cat
JOIN source on source.product = cat.product
GROUP BY source.product
Om du försöker få ett ', ' mellan varje kategori, använd SEPARATOR med GROUP_CONCAT . Till exempel:
GROUP_CONCAT(cat.category separator ', ')