gpt4 book ai didi

php - MySQL - 多级类别结构

转载 作者:搜寻专家 更新时间:2023-10-30 23:11:09 24 4
gpt4 key购买 nike

给定以下数据和表结构:

id       name          parent_id
================================
1 food NULL
2 snacks 1
3 cakes 2
4 birthdays 3

我想将这些行与它们的所有父类别一起输出。因此,例如我想生成一个查询来输出如下数据:

id       name          parent_id    parent_1    parent_2    parent_3
===================================================================
1 food NULL NULL NULL NULL
2 snacks 1 1 NULL NULL
3 cakes 2 1 2 NULL
4 birthdays 3 1 2 3

有了这个,我可以轻松获取给定类别的每个父级的 ID。

我曾尝试使用子查询来执行此操作,但不太成功。这是我尝试过的:

SELECT id, name, parent_id, parent_id AS _parent_1,
(SELECT parent_id FROM categories WHERE id = _parent_1) AS _parent_2,
(SELECT parent_id FROM categories WHERE id = _parent_2) AS _parent_3
FROM `categories`

编辑:根据反馈,以所需格式获取数据似乎有些困难。

至少有可能获得给定类别的所有子类别吗?因此,例如对于类别 ID 1,它应该输出其下方的三个类别(如果包含给定类别本身,则输出四个)。

最佳答案

您可以根据需要简单地自连接表多次以满足最大嵌套深度。这可能看起来像这样:

SELECT
c.id AS id,
c.name AS name,
parent.id AS parent,
grandparent.id AS grandparent,
greatgrandparent.id AS greatgrandparent
/* add other columns based on max depth of nesting */
FROM categories AS c
LEFT JOIN categories AS parent
ON c.parent_id = parent.id
LEFT JOIN categories AS grandparent
ON parent.parent_id = grandparent.id
LEFT JOIN categories AS greatgrandparent
ON grandparent.parent_id = greatgrandparent.id
/* keep joining based on max depth of nesting */

关于php - MySQL - 多级类别结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20078074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com