Sql HR模式ORACLE

Sql HR模式ORACLE,sql,oracle,Sql,Oracle,HR模式ORACLE 创建函数“GET_EMPLOYEE_SUMMARY”,该函数接收员工ID,并通过输出参数返回包含以下信息的数据结构: -员工ID -名字 -姓 -经理姓名 -部门名称 因此,经理的名字基于员工id 查询: select e.first_name as first_name, e.last_name, e.employee_id, e.manager_id as Name, d.department_name

HR模式ORACLE

创建函数“GET_EMPLOYEE_SUMMARY”,该函数接收员工ID,并通过输出参数返回包含以下信息的数据结构: -员工ID -名字 -姓 -经理姓名 -部门名称

因此,经理的名字基于员工id

查询:

select  

      e.first_name as first_name,
      e.last_name,
      e.employee_id,
      e.manager_id as Name,
      d.department_name

      from employees e 
      Cross join departments d 

但是我有一些错误。。。idk

您只需再次与
EMPLOYEE
表进行自联接,与
DEPARTMENT
表的联接应为内部联接

需要以下内容:

SELECT
    E.FIRST_NAME   AS FIRST_NAME,
    E.LAST_NAME,
    E.EMPLOYEE_ID,
    M.FIRST_NAME || M.LAST_NAME   AS MANAGER_NAME, -- Change it according to your requirement
    D.DEPARTMENT_NAME
FROM
    EMPLOYEES E
    JOIN EMPLOYEES M ON E.MANAGER_ID = M.EMPLOYEE_ID
    JOIN DEPARTMENTS D ON D.DEPARTMENT_ID = E.DEPARTMENT_ID
WHERE
    E.EMPLOYEE_ID = 100;

干杯

因为这看起来很像家庭作业,所以这里有一个粗略的指南,您需要填写以下空白:

你问题的第一部分是:

创建函数
GET\u EMPLOYEE\u SUMMARY

因此,您不应该从编写SQL查询开始,而应该编写PL/SQL语句:

创建函数GET\u EMPLOYEE\u SUMMARY。。。
您可以在中查找完整的语法

接收员工ID的

所以函数的一个参数应该是:

i\u employee\u id在employee.employee\u id%类型中
它通过一个输出参数返回一个包含以下信息的数据结构

因此,您的返回类型应该是一个由以下语句创建的类型:

将类型创建为对象(
)
然后可以在函数声明中使用该返回类型

在为函数编写PL/SQL块时,您可以包含查询,该查询应如下所示:

创建函数
是
开始
选择E.FIRST_NAME,
E.姓,
M.姓
D.部门名称
进入
,
,
来自雇员
左外接
ON(E.MANAGER\u ID=M.EMPLOYEE\u ID)
内部连接部门D
ON(D.部门ID=E.部门ID)
其中E.EMPLOYEE_ID=i_EMPLOYEE_ID;
回来
例外
当找不到数据时
终止
/

交叉连接
?!?我会定期进行
内部加入
。您需要再次加入员工才能获得经理的姓名。但当我进行加入时,还不完整。因为在employees表中,我的员工id=100,经理id=101,101的名字是alex,100是joao,当我返回100名员工查询时,经理的名字没有出现。。这是一个数字。。我必须把它和一个名字联系起来我如何再次加入?在e.manager_id=e2.employee_idthx bro上加入雇员e2,在sql(查询)中我懂一点,但pl sql我有很多困难。这不是我的家庭作业。。这只是一个教程,看看我是否同意这个观点(开发人员)或不在公司。。。我喜欢开发,但它太难了