После некоторого исследования я обнаружил, что лучше всего подойти к нему так:
- найти категорию нижнего уровня для каждого продукта и вернуть его путь
- разделить путь на отдельные категории. Это дает вам идентификаторы отдельных категорий
- найти значения для каждой категории
- в одной ячейке
Предпочитаемый метод, поскольку он может быть проще
ИЛИ
- найдите категорию нижнего уровня для каждого продукта и верните его путь
- найдите родителя этой категории, затем найдите следующего родителя и так далее, пока не достигнете категории верхнего уровня. Это дает вам идентификаторы отдельных категорий
- найти значения для каждой категории
- в одной ячейке
также хороший метод, но может быть излишне длинным.
Любой из этих подходов гарантирует, что у вас будет полный путь к категории каждый раз, так как в Magento вам не нужно выбирать все категории в пути. Также работает, если продукт принадлежит нескольким категориям.
Итак, в данный момент я застрял на шагах два и 3.
- Я не знаю, как разделить путь категории с помощью разделитель.
- Я не знаю, как искать значения по уже полученным результатам.
Мой текущий запрос выглядит так:
SELECT
ccp.product_id,
-- pe.sku,
-- pe.type_id,
cce.path,
ccp.category_id,
ccev.value,
cce.parent_id
FROM
mage_catalog_category_product AS ccp
JOIN
mage_catalog_category_entity AS cce ON ccp.category_id = cce.entity_id
JOIN
mage_catalog_category_entity_varchar AS ccev ON ccev.entity_id = cce.entity_id
JOIN
mage_catalog_product_entity AS pe ON pe.entity_id = ccp.product_id
WHERE
cce.children_count = '0'
AND cce.path LIKE '1/14%'
AND cce.path NOT LIKE '1/14/207%'
AND ccev.attribute_id = '33'
AND ccev.store_id = '0'
ORDER BY pe.sku
вывод выглядит this
![output looks like this](https://i.stack.imgur.com/akqDy.png)
Цель состоит в том, чтобы мой путь содержал имена категорий, а не идентификаторы. так что похоже на mydomain.com/books/kids/, а не на 1/2/3.
Как мне теперь найти родителя родителя?
ИЛИ
Как разделить пути на идентификаторы отдельных категорий и найти их значения, а не значение моей категории нижнего уровня?
Тогда как мне объединить результаты в одну ячейку?