2012-05-28 68 views
1

我有3个PostgreSQL的表如下Postgres的连接查询

员工

emp_name | emp_id | user_name | psw | etc 

工作

Work_id |work_type| Project_manger_id(employee) | Architect_id (emp) | tech_lead_id | dept_id 

部门

dept_id | dept_name 

现在我要的是一个表像这样

work_type | project_manager (name) | architect (name) | tech_lead (name) | dept (name) 

简单地说,我要的是把工作表,但更换标识与名称

+0

欢迎SO - 你尝试过什么? –

+0

我坚持的是,我不知道如何合并工作表与员工,因为我高压得到员工姓名匹配,project_manager_id与emp_id,architect_id与emp_id,tech_lead_id与emp_id,我怎么能做到这一点,到目前为止我所做的就是这样一些事情 SELECT e1.emp_name,e2.emp_name,e3.emp_name,w.work_id FROM员工e1,员工e2,员工e3,工作w 其中 e1.emp_id_id = w.project_manager_id和 e2.emp_id = –

+0

以这种方式我可以完成它,但唯一的问题是没有价值的员工,然后整个元组被忽略,:( –

回答

3

试试这个

Select WT.Work_Type,PM.emp_name As ProjectManager,AR.emp_name AS Arhitect,TL.emp_name As TechLead,Dept.Dept_name As Department From 
Work 
INNER JOIN employees AS PM ON (Wt.Project_manger_id=PM.emp_id) 
INNER JOIN employees AS AR ON (Wt.Architect_id=AR.emp_id) 
INNER JOIN employees AS TL ON (Wt.tech_lead_id=TL.emp_id) 
INNER JOIN Dept As Dept ON (Wt.dept_id=Dept.dept_id)