LEFT JOIN main_color c ON m.color LIKE '%'+c.color_en+'%'
что бы обрезало в m.color все до / и потом уже сравнивало с c.color_en?
LEFT JOIN main_color c ON m.color LIKE '%/'+c.color_en
WITH CTE_Hierarchy (id, parent_id, level, path)
AS
(SELECT id, parent_id, 1 ,cast(slug as varchar(100)) as path
FROM
categoryes
WHERE parent_id IS NULL //Если для пустых parent_id предусмотрено другое значение то поменять условие
UNION ALL
SELECT subcategory.id, subcategory.parent_id, level + 1,
case cast(path + '/' + subcategory.slug as varchar(100)) as path
FROM categoryes AS subcategory
INNER JOIN CTE_Hierarchy AS parentHierarchy ON subcategory.parent_id = parentHierarchy.id)