首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按顺序列出父类别和子类别数据

如何按顺序列出父类别和子类别数据
EN

Stack Overflow用户
提问于 2012-05-28 23:22:12
回答 5查看 2.7K关注 0票数 1
代码语言:javascript
复制
table : category  
    | id + category_name + parent_category_id |
    | 1  | Flower        |          0         |
    | 2  | Wall Decor    |          0         |
    | 3  | Stylish Living|          0         |
    | 4  | Mug           |          0         |
    | 5  | Sun Flower    |          1         |
    | 6  | Balsam        |          1         |

我尝试按排序顺序列出数据,首先是父类别,然后是子类别。

代码语言:javascript
复制
Flower
flower > Sun Flower
flower > Balsam
Wall Decor
Stylish Living
Mug    

当我尝试的时候,我不能像上面那样,下面是我得到的,花>向日葵和花>香脂应该在花下。

代码语言:javascript
复制
Flower
Wall Decor
Stylish Living
Mug   
flower > Sun Flower
flower > Balsam

如果有人能给出一些想法或解决方案,我将非常感激。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-28 23:52:22

代码语言:javascript
复制
SELECT category
FROM (
  SELECT
     IF(p.category_name is null, c.category_name, CONCAT(p.category_name, ' > ', c.category_name)) AS 'category'
  FROM category c
  LEFT JOIN category p ON c.parent_category_id = p.category_id
) s
ORDER BY category

...is这是我能想出的最好的结果。See it working

票数 1
EN

Stack Overflow用户

发布于 2012-05-28 23:31:05

我有一个类似的结构,并使用以下的变体:

代码语言:javascript
复制
SELECT
    p.category_id, p.category_name,
    c.category_id, c.category_name
FROM category AS c
JOIN category AS p ON (c.parent_category_id = p.category_id)    
ORDER BY p.category_name, c.category_name

你可能不得不修补你使用的连接类型(我知道什么应该/不应该有孩子),但它会给你所有的孩子类别和他们的父母,按照你所要求的方式排序。

票数 1
EN

Stack Overflow用户

发布于 2012-05-28 23:34:39

我终于让它显示出你想要的东西了。下面是SQL语句:

代码语言:javascript
复制
SELECT p.category_name as parent_category, '' as child_category
FROM category AS p
WHERE parent_category_id not in (select category_id from category)
UNION
SELECT p.category_name as parent_category, c.category_name as child_category
FROM category AS p
JOIN category AS c ON (c.parent_category_id = p.category_id)
ORDER BY parent_category, child_category

下面是输出:

代码语言:javascript
复制
+-----------------+----------------+
| parent_category | child_category |
+-----------------+----------------+
| Flower          |                | 
| Flower          | Balsam         | 
| Flower          | Sun Flower     | 
| Mug             |                | 
| Stylish Living  |                | 
| Wall Decor      |                | 
+-----------------+----------------+

请注意,这只适用于两级的父子关系。如果你有第三层,并且需要在三列中显示它,那么它就会变得复杂得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10786973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档