Child + Parent reference SQL(子 + 父参考 SQL)
问题描述
我正在尝试编写一个查询来显示项目的名称和父项目的名称,但到目前为止还没有正确的方法.
I am trying to write a query to display the name of the project and the name of the parent project, but haven't come with the proper way so far.
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
I can get most of the information, but I don't know how to link the project.parent_p_id to the project.project_name
有人帮我吗?!
提前致谢:-)
推荐答案
你需要一个自联接,像这样将 PROJECT 表联接到自身
You need a self join, joining the PROJECT table to itself like this
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;
如果您想包含没有父项目的项目,则联接将是左外联接.
If you want to include projects which don't have a parent project then the join would be a LEFT OUTER JOIN.
这篇关于子 + 父参考 SQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:子 + 父参考 SQL
基础教程推荐
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- 带更新的 sqlite CTE 2022-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
