【问题标题】:SELECT or JOIN using two tables with similar columns使用具有相似列的两个表进行 SELECT 或 JOIN
【发布时间】:2021-02-25 02:13:38
【问题描述】:

简要概述和关系信息

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

给定架构

Employee 表有以下列:

  • Employee_Number
  • 姓名
  • 家庭住址
  • 电话号码

Manager 表包含:

  • Manager_Number
  • Employee_Number(用外键链接到 Employee 表)

Mentor 表包含:

  • Mentee_Number(与外键链接到 Manager 表 [Manager_Number])
  • Mentor_Number(也与外键链接到 Manager 表 [Manager_Number])

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

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

任何帮助将不胜感激!

【问题讨论】:

  • 如果我错了,请纠正我,emp2.employee_number = man2.employee_number 我在查询中没有看到表得到别名man2

标签: sql oracle oracle11g


【解决方案1】:

抛开你需要的逻辑,你有一些问题需要解决:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 2011-03-07
    • 1970-01-01
    • 2012-08-25
    • 2016-02-11
    相关资源
    最近更新 更多