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为空,则查询将终止。简言之,我只想要所有特定类别的父母。