Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从给定的sql表中获取特定类别id的所有父注释?_Php_Mysql - Fatal编程技术网

Php 如何从给定的sql表中获取特定类别id的所有父注释?

Php 如何从给定的sql表中获取特定类别id的所有父注释?,php,mysql,Php,Mysql,这是我的分类表 我想要一个显示特定类别\u id的所有以上父级的查询。示例:如果在查询中我定义了类别\u id=7,则结果如下: 7便携式电子设备6 6电子设备1 并且1的父项为null,则查询将终止。简言之,我只想要所有特定类别的父母 提前感谢。set@category:=7 set @category := 7 ; select l.n ,elt(l.n,c1.category_id,c2.category_id,c3.category_id,c4.cat

这是我的分类表


我想要一个显示特定类别\u id的所有以上父级的查询。示例:如果在查询中我定义了类别\u id=7,则结果如下:

7便携式电子设备6

6电子设备1

并且1的父项为null,则查询将终止。简言之,我只想要所有特定类别的父母

提前感谢。

set@category:=7
set @category := 7
;

select      l.n
           ,elt(l.n,c1.category_id,c2.category_id,c3.category_id,c4.category_id,c5.category_id,c6.category_id,c7.category_id,c8.category_id,c9.category_id)     as category_id
           ,elt(l.n,c1.name,c2.name,c3.name,c4.name,c5.name,c6.name,c7.name,c8.name,c9.name)                                                                    as parent_name

from                    category    as c1
            left join   category    as c2   on c2.category_id = c1.parent
            left join   category    as c3   on c3.category_id = c2.parent
            left join   category    as c4   on c4.category_id = c3.parent
            left join   category    as c5   on c5.category_id = c4.parent
            left join   category    as c6   on c6.category_id = c5.parent
            left join   category    as c7   on c7.category_id = c6.parent
            left join   category    as c8   on c8.category_id = c7.parent
            left join   category    as c9   on c9.category_id = c8.parent

            cross join (            select 1    as n
                        union all   select 2 
                        union all   select 3 
                        union all   select 4 
                        union all   select 5 
                        union all   select 6 
                        union all   select 7 
                        union all   select 8 
                        union all   select 9
                        ) l

where       c1.category_id = @category  

        and l.n <= 
            case 
                when c9.category_id is not null then 9
                when c8.category_id is not null then 8
                when c7.category_id is not null then 7
                when c6.category_id is not null then 6
                when c5.category_id is not null then 5
                when c4.category_id is not null then 4
                when c3.category_id is not null then 3
                when c2.category_id is not null then 2
                when c1.category_id is not null then 1
            end
;
; 选择l.n ,elt(l.n,c1.类别识别号,c2.类别识别号,c3.类别识别号,c4.类别识别号,c5.类别识别号,c6.类别识别号,c7.类别识别号,c8.类别识别号,c9.类别识别号)作为类别识别号 ,elt(l.n,c1.name,c2.name,c3.name,c4.name,c5.name,c6.name,c7.name,c8.name,c9.name)作为父项名称 从类别c1开始 左连接类别为c2上的c2。类别_id=c1。父级 左连接类别为c3上的c3。类别\u id=c2.parent 左连接类别为c4上的c4。类别_id=c3.parent 左连接类别为c5上的c5。类别_id=c4。父级 左连接类别为c6上的c6.category_id=c5.parent 在c7.category_id=c6.parent上作为c7左连接类别 在c8.category\u id=c7.parent上以c8的形式左连接类别 在c9.category\u id=c8.parent上作为c9左连接类别 交叉联接(选择1作为n 联合所有选择2 联合所有选择3 联合所有选择4 联合所有选择5 联合所有选择6 联合所有选择7 联合所有选择8 联合所有选择9 )l 其中c1.category_id=@category
和l.n您希望输出的外观如何?我想要一个显示特定类别\u id的所有以上父级的查询。示例:如果在查询中我定义了类别\u id=7,则结果将如下:7便携式电子设备6…..6电子设备1…且父级为空,则查询将终止。简言之,我只想要特定类别的所有家长。看看它只给出单亲,意思是如果我输入7,它给出7的家长是6,但我想要所有家长,就像7的家长是6,6的家长是1。不,它给出所有家长。请执行内部查询并验证。你应该得到1,2,6和7如果用户输入7,那么它应该显示7的直接父级,最重要的是,在MySQL中,它会非常难看,你必须提前确定最大深度。请定义所需的输出、行和列。我需要一个显示特定类别\u id的所有以上父项的查询。示例:如果在查询中我定义类别\u id=7,则结果如下:7便携式电子设备6…..6电子设备1…且父项1为空,则查询将终止。简言之,我只想要所有特定类别的父母。