2012-11-21 60 views
0

我有具有以下列的雇员表的数据库:SQL:选择相关值

(EmpID char(4) unique Not null, 
Ename varchar(10), 
Job  varchar(9), 
MGR  char(4), 
Hiredate date, 
Salary decimal(7,2), 
Comm  decimal(7,2), 
DeptNo char(2) not null, 
    Primary key(EmpID), 
    Foreign key(DeptNo) REFERENCES DEPARTMENTS(DeptNo)); 

与样本INSERT:

insert into EMPLOYEES values (7654,'Martin','Salesman',7698,'28-Feb-12',1250,1400,30); 

我无法弄清楚如何列出所有员工和他们的经理通过经理姓名。我不知道如何显示经理姓名,只是号码。

+0

将表加入自身,给每个实例一个不同的别名,因此即使'employee'和'manager'与EMPLOYEES表相同,您也可以引用'employee.Ename'和'manager.Ename'。 –

+0

'选择manager.Ename为“经理姓名”,e.Ename为“员工姓名” 从雇员e,雇员经理 加入员工 上Employees.Ename = manager.ENAME;' 我试过以上,但与结果不正确。我加入了表格并尝试显示别名。 – bbbbbbbbbb

回答

0

您的评论中的查询是错误的,因为它在Ename上执行JOIN

试试这个:

SELECT 
    manager.Ename as 'Manager Name' 
    , e.Ename as 'Employee Name' 
FROM 
    Employees e 
    JOIN Employees manager on e.MGR = manager.EmpID; 

原始查询加入了对名称的表格。您应该将MGR ID绑定到EmpID以查找经理。

+0

非常感谢! – bbbbbbbbbb