如何通过 id 获取类别层次结构 |打开购物车 3

问题描述 投票:0回答:0

我试图通过 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
mysql opencart opencart-3
© www.soinside.com 2019 - 2024. All rights reserved.