2016-09-16 56 views
0

我試圖檢索階段,批處理,任務和員工分配到一個項目的任務,我差不多完成,但我不明白爲什麼結果變爲空時,只要我試圖包括employee表。

這是我原來的語句:多JOIN語句

SELECT project.JONumber, stage.StageName, batch.BatchName, tasks.task_name, tasks_assignment.employee_number 
    FROM project 
    JOIN stage ON project.id = stage.project_id 
    JOIN batch ON stage.ID = batch.stage_id 
    JOIN tasks ON batch.id = tasks.batch_id 
    JOIN tasks_assignment ON tasks.id = tasks_assignment.task_id 
    WHERE project.id = 23441; 

但是當我嘗試添加其他JOIN聲明,結果返回空,
這裏是更新語句:

SELECT project.JONumber, stage.StageName, batch.BatchName, tasks.task_name, tasks_assignment.employee_number, employee.FirstName 
FROM project 
JOIN stage ON project.id = stage.project_id 
JOIN batch ON stage.ID = batch.stage_id 
JOIN tasks ON batch.id = tasks.batch_id 
JOIN tasks_assignment ON tasks.id = tasks_assignment.task_id 
JOIN employee ON employee.ID=tasks_assignment.employee_number 
WHERE project.id = 23441; 


我我認爲我可能搞砸了最後一個JOIN語句,但不是JOIN應該像JOIN table2 ON table1.Primarykey=table2.foreignkey。但也許我錯了,有誰能指出我的錯誤嗎?我只是真的很困惑

+2

您的SQL似乎沒什麼問題。我會手動查找'employee'表的有關條目,查看它們是否存在,具有正確的格式等。如果沒有找到該錯誤,請使用數據庫的一些示例編輯該問題。 – TheHowlingHoaschd

+0

@TheHowlingHoaschd yep我手工檢查了它,看起來那個做表的人爲員工表放了2個ID,一個是索引,另一個是實際員工ID。 – Marc

回答

0

嘗試這樣一次

SELECT project.JONumber, stage.StageName, batch.BatchName, tasks.task_name, tasks_assignment.employee_number, employee.FirstName 
FROM project 
JOIN stage ON project.id = stage.project_id 
JOIN batch ON stage.ID = batch.stage_id 
JOIN tasks ON batch.id = tasks.batch_id 
JOIN tasks_assignment ON tasks.id = tasks_assignment.task_id 
RIGHT OUTER JOIN employee ON employee.ID=tasks_assignment.employee_number 
WHERE project.id = 23441;