如何在一次SQL查询中一次又一次地连接同一个表?

时间:2014-05-03 15:01:30

标签: mysql sql

我有一个名为category的表,有三列。

  1. 类别ID(唯一自动公司ID)
  2. 类别名称
  3. 类别父级(来自同一个表的父级的唯一ID。如果不是0)
  4. 我可以拥有任何数量的深度儿童。要求是在一个查询中获取具有父子关系的所有类别。

    输出应该是......

    • 第1类
    • 第1类 - >第2类(假设第2类'父母是第1类)
    • 第1类 - >第2类 - >第3类(假设第3类及其父类别为第2类)

    同样,它应该返回层次结构的所有内容。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

谢谢Rayan Vincent。我刚从你提到的链接中得到了想法。

我不确定这是获得它的有效方式......但输出正如预期的那样。我在这里写的查询,如果有人寻找类似的可能会有所帮助。结果可以达到4级孩子。

SELECT DISTINCT t4.category_id as id, t4.category_name AS lev1, t3.category_name as lev2, t2.category_name as lev3, t1.category_name as lev4 FROM categories AS t1 RIGHT JOIN categories AS t2 ON t2.category_parent = t1.category_id RIGHT JOIN categories AS t3 ON t3.category_parent = t2.category_id RIGHT JOIN categories AS t4 ON t4.category_parent = t3.category_id