Мисля, че това е, което търсите, като използвате GROUP_CONCAT :
SELECT
source.product,
GROUP_CONCAT(cat.category) cats
FROM cat
JOIN source on source.product = cat.product
GROUP BY source.product
Ако се опитвате да получите ', ' между всяка категория, използвайте SEPARATOR с GROUP_CONCAT . Например:
GROUP_CONCAT(cat.category separator ', ')