使用父级ID

时间:2019-01-23 21:14:48

标签: mysql

我有一个数据库表(Support_help_topic),其中包含以下数据:

topic_id | topic_pid | topic

我想要做的是选择一个帮助主题,然后获取其所有父主题并将它们串联在一起。

以下面的示例为例。

有几个父级帮助主题:事件,请求,常规支持

这些父主题中的每个主题可能都有几个子主题,并且这些子主题下可能还有其他主题。

下面是完整的帮助主题路径的示例

事件/软件/ Microsoft Outlook

事件可能有

  • topic_id为1
  • topic_pid为0(它是顶级主题)

软件可能具有

  • topic_id为20
  • topic_pid为1(其父是事件)

Microsoft Outlook可能有

  • topic_id为34
  • topic_pid为20(其父级为软件)

在每种情况下,我都需要在一个选择语句中获得以下任一条件:

如果该主题有父母,我需要获得:  -Top_Level_Topic /主题

如果该主题没有父母,我需要获得:

  • 主题

我对此深感困惑,不知道从哪里开始。

在此先感谢您的帮助。 非常乐意提供所需的其他信息。

1 个答案:

答案 0 :(得分:0)

我最终使用了以下内容:

SELECT
    CASE
        WHEN t2.topic IS NULL then t1.topic
        WHEN t3.topic IS NULL then concat(t2.topic, ' / ', t1.topic)
        ELSE concat(t3.topic, ' / ', t2.topic, ' / ', t1.topic)
    END as help_topic
FROM 
    Support_help_topic AS t1
LEFT JOIN 
    Support_help_topic AS t2 ON t2.topic_id = t1.topic_pid
LEFT JOIN 
    Support_help_topic AS t3 ON t3.topic_id = t2.topic_pid
where 
    t1.topic_id = `supptick`.`topic_id`