如何将两个工作SELECT查询合并为一个查询?

时间:2017-04-16 15:26:39

标签: sql oracle

我有两个独立于彼此的查询;

SELECT e.employee_id, 
       e.first_name, 
       e.last_name, 
       e.job_id, 
        e.salary, 
        e.commission_pct, e.manager_id,  
       e.department_id,  
       j.start_date,  
       j.end_date
FROM hr.employees e
LEFT OUTER JOIN hr.job_history j 
    ON e.employee_id = j.employee_id
WHERE commission_pct IS NULL

第一个回忆两个不同表格中的信息,hr.employeeshr.job_history

这是第二个;

SELECT e.employee_id, 
        e.last_name, 
        m.employee_id "MgrNo",  
       m.last_name "MgrName"
FROM hr.employees e 
INNER JOIN hr.employees m ON e.manager_id=m.employee_id

这是为了将employee_idmanager_id相关联,以显示每个员工的经理姓氏。但是,当我尝试将两者结合在一起时,我不断收到错误,告诉我我的前缀无效。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

尝试:

app.get('/check',function(req,res){
    var user = firebaseClient.auth().currentUser
    console.log(user)
})

这使用一个作为子查询,然后在第一个查询的密钥上加入其密钥。

答案 1 :(得分:0)

您似乎正在尝试创建一个查询,该查询将使用其经理信息生成员工薪资/佣金历史记录。您可以组合这样的查询:

SELECT e.employee_id, e.first_name, e.last_name, e.job_id, e.salary,
       commission_pct, e.manager_id, e.department_id, j.start_date, j.end_date, 
       m.employee_id "MgrNo", m.last_name "MgrName"
FROM hr.employees e
INNER JOIN hr.employees m ON e.manager_id=m.employee_id
LEFT OUTER JOIN hr.job_history j ON e.employee_id = j.employee_id
WHERE commission_pct IS NULL

答案 2 :(得分:0)

  

"我一直收到错误,告诉我前缀无效。"

这是一个错字。我们无法在您尚未发布的查询版本中发现它。但基本上你只需要第一个查询中的另一个连接,如下所示:

SELECT e.employee_id, 
       e.first_name, 
       e.last_name, 
       e.job_id, 
       e.salary,                                     
       e.commission_pct, 
       m.employee_id "MgrNo", 
       m.last_name "MgrName",
       e.department_id, 
       j.start_date, 
       j.end_date
FROM hr.employees e
LEFT OUTER JOIN hr.job_history j 
   ON e.employee_id = j.employee_id
LEFT OUTER JOIN hr.employees m
   ON m.employee_id = e.manager_id
WHERE e.commission_pct IS NULL  

我建议使用外部联接,因为通常不是每个员工都有一个经理(取决于您如何实现层次结构)。