gpt4 book ai didi

sql - Oracle中sql中的树结构。如何在SQL Oracle中显示树、子节点和父节点

转载 作者:行者123 更新时间:2023-12-04 14:31:27 25 4
gpt4 key购买 nike

我想在 SQL 中显示一个带有子节点和父节点的树结构。
我有一张像:

Employee
-------------
ID (int)
FirstName (varchar)
LastName (varchar)
ParentID (int)
Job (varchar)

代表一名员工。 家长 ID 代表经理的员工了。我只想拥有这个结构的表。
  • 我想展示整个树结构。
  • 我只想显示子节点
  • 我只想显示父节点

  • SampleDataImage

    最佳答案

    查询-全树结构 :

    SELECT *
    FROM Employee
    START WITH ParentID IS NULL
    CONNECT BY PRIOR ID = ParentID
    ORDER SIBLINGS BY LastName, FirstName, ID;

    查询 - 给定员工的 child :

    您不需要为此进行分层查询。
    (父级由绑定(bind)变量 :parent_id 给出)
    SELECT *
    FROM Employee
    WHERE ParentID = :parent_id
    ORDER BY LastName, FirstName, ID;

    查询 - 给定员工的后代 :

    与整棵树的查询相同,但起点不同
    (父级由绑定(bind)变量 :parent_id 给出)
    SELECT *
    FROM Employee
    START WITH ParentID = :parent_id
    CONNECT BY PRIOR ID = ParentID
    ORDER SIBLINGS BY LastName, FirstName, ID;

    查询 - 员工及其祖先 :

    与前面的查询类似,但带有 CONNECT BY反过来,您无需订购 sibling ,因为每位员工只有一名直属经理。
    (员工由绑定(bind)变量 :employee_id 给出)
    SELECT *
    FROM Employee
    START WITH ID = :employee_id
    CONNECT BY PRIOR ParentID = ID;

    查询-员工的经理 :

    与上一个查询相同,但带有过滤器 LEVEL = 2只是获得直接的父行。
    (员工由绑定(bind)变量 :employee_id 给出)
    SELECT e.*
    FROM Employee e
    WHERE LEVEL = 2
    START WITH ID = :employee_id
    CONNECT BY PRIOR ParentID = ID;

    关于sql - Oracle中sql中的树结构。如何在SQL Oracle中显示树、子节点和父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37134238/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com