Jeg tror, det er det, du leder efter ved hjælp af GROUP_CONCAT :
SELECT
source.product,
GROUP_CONCAT(cat.category) cats
FROM cat
JOIN source on source.product = cat.product
GROUP BY source.product
Hvis du prøver at få et ', ' mellem hver kategori, skal du bruge SEPARATOR med GROUP_CONCAT . For eksempel:
GROUP_CONCAT(cat.category separator ', ')