2016-11-03 67 views
0

下午,使用子查询难以从多个表中选择数据

下面是我创建的一个关系模式来帮助回答我的问题。

JOBS (**jobClass**, Description, chargePerHour) 

EMPLOYEES (**empNo**, *jobClass*, firstName, lastName) 

外键jobClass引用JOBS

PROJECTS (**projectNo**, projectName) 

PROJECTS2EMPLOYEES (**projEmpKey**, *projectNo*, *empNo*, hoursBilled, projectLeader) 

外键projectNo引用PROJECTS
外键EMPNO引用员工

Bold = PK (Primary Key) 
Italic = FK (Foreign Key) 

我想从Projects表中选择projectName,并从Employees表中选择每个项目的项目负责人的全名。

项目领导者在project2employees表的projectLeader字段中通过1来区分。

我最后的尝试是

SELECT projectName, CONCAT_WS(" ", firstName, lastName) FROM Projects, Employees WHERE projectNo IN 
(SELECT projectNo from projects2employees WHERE projectLeader = 1) 

,但它没有工作非常好。

任何帮助,将不胜感激

+0

提示。 –

回答

1

试试这个:有`ON`条款`JOIN`:

SELECT p.projectName, CONCAT(firstName, ' ', lastName) 
    FROM Projects p 
    JOIN projects2employees pe 
    ON (p.projectNo = pe.projectNo and pe.projectLeader = 1) 
    JOIN employees e 
    ON (pe.empno= e.empno) 
+0

我试过这个,但是它返回了一个空集。 –

+0

我想我使用了错误的关系。现在试试@ DarrenO'BRIEN – sagi

+0

这很好,但我很难理解它是如何工作的。你能帮助我理解吗?具体而言,我不明白在某些字段名称前面使用单个字母。 –