自相关表

时间:2016-04-18 20:50:17

标签: mysql

我有一个具有多层类别结构的产品数据库。产品被分配到一个类别。类别表如下所示:

id     name            parent_id
================================
1      Electronics     NULL
2      AV              1
3      Speakers        2
4      Wireless        3

我想要做的是,作为产品的SELECT语句的一部分,输出类别树的连接字符串。

产品始终分配到最后一个类别,例如,Product" 500w无线扬声器"将被分配到category_id 4(基于上述内容)。

ouputted列应为Electronics-AV-Speakers-Wireless

这可能吗?我看过GROUP_CONCAT(),但我在制定正确的语法时遇到了麻烦。

1 个答案:

答案 0 :(得分:0)

根据需要加入多次,并连接名称:

select concat(a.name, '-', b.name, '-', c.name, '-', d.name) name
from mytable a
join mytable b on a.id = b.parent_id
join mytable c on b.id = c.parent_id
join mytable d on c.id = d.parent_id;