【问题标题】:Child + Parent reference SQL子 + 父参考 SQL
【发布时间】:2017-11-12 15:07:27
【问题描述】:

我正在尝试编写一个查询来显示项目的名称和父项目的名称,但到目前为止还没有正确的方法。

CREATE TABLE project
(p_id NUMBER(6),
project_name VARCHAR2(30),
client_id NUMBER(6),
mgr_id NUMBER(6),
parent_p_id NUMBER(6),
CONSTRAINT project_pid_pk PRIMARY KEY (p_id),
CONSTRAINT project_client_id_fk FOREIGN KEY (client_id) REFERENCES client(client_id),
CONSTRAINT project_mgr_id_fk FOREIGN KEY (mgr_id) REFERENCES consultant(c_id));

ALTER TABLE project
ADD CONSTRAINT project_parent_pid_fk FOREIGN KEY (parent_p_id) REFERENCES project(p_id);

通过使用:

SELECT project.p_id, project.project_name, project.parent_p_id
FROM project
WHERE project.parent_p_id IS NOT NULL;

我可以得到大部分信息,但我不知道如何将 project.parent_p_id 链接到 project.project_name

有人帮帮我吗?!

提前致谢:-)

【问题讨论】:

    标签: sql oracle oracle11g


    【解决方案1】:

    你需要一个自连接,像这样将 PROJECT 表连接到自身

    SELECT p.p_id, 
           p.project_name, 
           p.parent_p_id, 
           pp.project_name as parent_project
    FROM project p
         inner join project pp
         on p.parent_p_id = pp.p_id;
    

    如果您想包含没有父项目的项目,则联接将是 LEFT OUTER JOIN。

    【讨论】:

    • 感谢您的快速回答! :-)
    猜你喜欢
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2018-10-05
    相关资源
    最近更新 更多