我试图通过 id 获得完整的类别层次结构,但由于某种原因它看起来不可能
此代码获取所有类别层次结构
SELECT cp.category_id AS category_id,
GROUP_CONCAT(cd1.name ORDER BY cp.level SEPARATOR ' > ') AS name,
c1.parent_id, c1.sort_order
FROM oc_category_path cp
LEFT JOIN oc_category c1 ON (cp.category_id = c1.category_id)
LEFT JOIN oc_category c2 ON (cp.path_id = c2.category_id)
LEFT JOIN oc_category_description cd1 ON (cp.path_id = cd1.category_id)
LEFT JOIN oc_category_description cd2 ON (cp.category_id = cd2.category_id)
WHERE cd1.language_id = '2'
AND cd2.language_id = '2'
GROUP BY cp.category_id
ORDER BY name ASC
LIMIT 0,20
结果:
category_id name parent_id
33 Cameras 0
25 Components 0
29 Components > Mice and Trackballs 25
28 Components > Monitors 25
35 Components > Monitors > test 1 28
36 Components > Monitors > test 2 28
30 Components > Printers 25
31 Components > Scanners 25
32 Components > Web Cameras 25
现在我只想获得 category_id = 25 的结果,我像这样重新编写代码
SELECT cp.category_id AS category_id,
GROUP_CONCAT(cd1.name ORDER BY cp.level SEPARATOR ' > ') AS name,
c1.parent_id, c1.sort_order
FROM oc_category_path cp
LEFT JOIN oc_category c1 ON (cp.category_id = c1.category_id)
LEFT JOIN oc_category c2 ON (cp.path_id = c2.category_id)
LEFT JOIN oc_category_description cd1 ON (cp.path_id = cd1.category_id)
LEFT JOIN oc_category_description cd2 ON (cp.category_id = cd2.category_id)
WHERE cd1.language_id = '2'
AND cd2.language_id = '2'
AND cp.path_id = 25
GROUP BY cp.category_id
ORDER BY name ASC
结果:
category_id name parent_id
25 Components 0
28 Components 25
29 Components 25
30 Components 25
31 Components 25
32 Components 25
35 Components 28
我想得到这样的结果:
25 Components 0
29 Components > Mice and Trackballs 25
28 Components > Monitors 25
35 Components > Monitors > test 1 28
36 Components > Monitors > test 2 28
30 Components > Printers 25
31 Components > Scanners 25
32 Components > Web Cameras 25