Creo que esto es lo que estás buscando usando GROUP_CONCAT
:
SELECT
source.product,
GROUP_CONCAT(cat.category) cats
FROM cat
JOIN source on source.product = cat.product
GROUP BY source.product
Si está tratando de obtener un ',' entre cada categoría, use SEPARATOR
con GROUP_CONCAT
. Por ejemplo:
GROUP_CONCAT(cat.category separator ', ')