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

时间:2016-11-03 11:25:42

标签: mysql

下午,

下面是我创建的关系模式,以帮助回答我的问题。

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

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

外键 jobClass 引用 JOBS

PROJECTS (**projectNo**, projectName)

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

外键 projectNo 引用项目
外键 empNo 引用员工

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

我正在尝试从Projects表中选择projectName,并从Employees表中为每个项目选择项目负责人的全名。

项目负责人在projects2employees表的projectLeader字段中区别为1。

我的最后一次尝试是

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

但它并没有很好地运作。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

试试这个:

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)