Php 创建Sql子类别表

Php 创建Sql子类别表,php,mysql,sql,Php,Mysql,Sql,今天我去面试了,有个问题我没听说,我想知道怎么做。。。如何使用查询进行此操作 创建一个可容纳n级类别的表。根据以下示例,创建一个可扩展类别树的表。现在,表的设计应该使类别级别可以扩展到所需的任何级别 root / \ / \

今天我去面试了,有个问题我没听说,我想知道怎么做。。。如何使用查询进行此操作

创建一个可容纳n级类别的表。根据以下示例,创建一个可扩展类别树的表。现在,表的设计应该使类别级别可以扩展到所需的任何级别

                                  root
                                  /   \
                                 /     \
                               MEN      women------------
                               / \         /            |
                              /   \       Shirt&top     paints
                         shirt   trousers                /   \ 
                                                        /     \
                                                       /       \
                                                      /         \
                                                    trouser     Skirts and jeans
“cookbook”解决方案是让父id列指向单个表中的类别id:

CREATE TABLE categories (
    category_id INT PRIMARY KEY,
    parent_id INT REFERENCES category_id,
    name VARCHAR(100)
)
因此,对于上面给出的示例:

INSERT INTO categories VALUES (1, null, 'root'),
(2, 1, 'Men'),
(3, 2, 'shirt'),
(4, 2, 'trousers'),
(5, 1, 'women'),
(6, 5, 'shirt & top'),
(7, 5, 'pants'),
(8, 7, 'trousers'),
(9, 7, 'skirts and jeans');

如果需要在单个表中实现该结构,可以在每行存储以下信息:

  • id(主键,类别id)
  • 父类id(指向父类id)
  • 类别名称(类别名称的文本表示)
  • 因此,在您的示例中,数据将按如下方式存储:

    1 | 0 | root
    2 | 1 | MEN
    3 | 2 | shirt
    4 | 2 | trousers
    5 | 1 | women
    6 | 5 | shirt & top
    

    。。。等等

    很简单,你听说过
    家长id
    ?:)1.根。0,2.男人。1,3.女人。1,4.衬衫。2…请看这里。我相信这会对你有帮助@LalitSharma…'“单表”它是一种称为递归关系的东西。在谷歌网页/图片上搜索或参考@LalitSharma提供的链接。