首页 > 解决方案 > 使用具有相似列的两个表进行 SELECT 或 JOIN

问题描述

简要概述和关系信息

一个导师可以在 1:N 关系中指导多个被指导者,这在两端都是可选的,因此可能有一些经理不指导任何其他经理,也可能有经理没有由另一位经理指导。导师和学员都由他们各自的编号表示,这也是他们在经理表中的经理编号。

给定模式

Employee 表具有以下列:

管理器表包含:

Mentor 表包含:

需要什么以及我尝试了什么

我正在尝试进行 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;

任何帮助将不胜感激!

标签: sqloracleoracle11g

解决方案


撇开您需要的逻辑不谈,您还有一些问题需要解决:

ON
 emp2.employee_number = man2.employee_number /* <---- no MAN2 alias */
INNER JOIN
  mentor men                                 /* <---- same alias MEN than before */

推荐阅读