sql - 使用具有相似列的两个表进行 SELECT 或 JOIN
问题描述
简要概述和关系信息
一个导师可以在 1:N 关系中指导多个被指导者,这在两端都是可选的,因此可能有一些经理不指导任何其他经理,也可能有经理没有由另一位经理指导。导师和学员都由他们各自的编号表示,这也是他们在经理表中的经理编号。
给定模式
Employee 表具有以下列:
- 员工编号
- 姓名
- 家庭地址
- 电话号码
管理器表包含:
- 经理号码
- Employee_Number(用外键链接到 Employee 表)
Mentor 表包含:
- Mentee_Number(与外键链接到 Manager 表 [Manager_Number])
- Mentor_Number(也与外键链接到 Manager 表 [Manager_Number])
需要什么以及我尝试了什么
我正在尝试进行 JOIN 以便可以看到以下列:
- 导师的经理编号
- 导师姓名
- 被指导者的经理编号
- 学员姓名
我有以下 join 语句,它似乎不起作用,我不确定为什么:
SELECT
man.manager_number,
man.employee_number AS mentor_employee,
emp.name AS mentor_name,
man2.employee_number AS mentee_employee,
emp2.name AS mentee_name
FROM
manager man
INNER JOIN
employee emp
ON
emp.employee_number = man.employee_number
INNER JOIN
mentor men
ON
man.manager_number= men.mentor_number
INNER JOIN
employee emp2
ON
emp2.employee_number = man2.employee_number
INNER JOIN
mentor men
ON
man.manager_number= men.mentee_number;
任何帮助将不胜感激!
解决方案
撇开您需要的逻辑不谈,您还有一些问题需要解决:
ON
emp2.employee_number = man2.employee_number /* <---- no MAN2 alias */
INNER JOIN
mentor men /* <---- same alias MEN than before */
推荐阅读
- r - 在 dplyr 的函数中使用字符串
- javascript - 如何编写函数结果
- c++ - 当一个变量比c ++中的另一个变量持有更少的位/字节时有什么区别
- android - 从graphql客户端连接到全局服务器的问题本机反应
- python - Python:即使它肯定存在,也不会在列表中找到字符串
- python - 当我使用 YOLACT 运行 train.py 时,我收到错误 KeyError: 0
- python - 按值对大字典进行排序
- ios - ARSCNView 中 arView.scene.addAnchor() 的等价物是什么?
- html - 如何使用多个音频标签
- next.js - 如何在 nextjs 中检查每个请求的 cookie?