2016-11-03 66 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

這很好,但我很難理解它是如何工作的。你能幫助我理解嗎?具體而言,我不明白在某些字段名稱前面使用單個字母。 –