2016-09-16 52 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;