Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
empyrean
Starting Member
14 Posts |
Posted - 2009-12-29 : 22:20:52
|
| I have three tables Leader, Employee and ProjectLeader TableID EmployeeID LeaderIDid1 Emp1 leader1id2 Emp2 leader1id3 Emp3 leader1 id4 Emp4 leader1id5 Emp5 leader2id6 Emp6 leader2Employee TableEmployeeId ProjectID WorkingHoursEmp1 Proj1 110Emp2 Proj1 80Emp2 Proj2 10Emp3 Proj2 222Project TableProjectID ProjectNameProj1 Projectname1Proj2 Projectname2Proj3 Projectname3Proj4 Projectname4Select a.LeaderID, a.EmployeeID, b.WorkingHours, c.ProjectID from LeaderTable a left outer join EmployeeTable bon b.EmployeeID = a.EmployeeID left join ProjectTable con b.ProjectID = c.ProjectID where LeaderID = @LeaderID and c.ProjectID = @ProjectIDWhen i use this query i am getting the values like the following resultParameters LeaderID = Leader1 and ProjectID = Proj1LeaderID EmployeeID WorkingHours ProjectIDLeader1 Employee1 110 Proj1Leader1 Employee2 80 Proj1But i want the result to include null values and all the employees under leader should be displayed but only working hours with respect to specific project should change. If an employee under leader is not involved in project, it should be displayed with null values in working hours. It should look like following for same parameters as aboveLeaderID EmployeeID WorkingHours ProjectIDLeader1 Employee1 110 Proj1Leader1 Employee2 80 Proj1Leader1 Employee3 Null Proj1Leader1 Employee4 Null Proj1 |
|
|
raky
Aged Yak Warrior
767 Posts |
Posted - 2009-12-30 : 01:39:25
|
| [code]Hi,This is the solutiondeclare @Leader Table (ID varchar(10),EmployeeID varchar(30), LeaderID varchar(30))insert into @Leaderselect 'id1', 'Emp1', 'leader1' union allselect 'id2', 'Emp2','leader1' union allselect 'id3', 'Emp3', 'leader1' union allselect 'id4', 'Emp4', 'leader1' union allselect 'id5', 'Emp5', 'leader2' union allselect 'id6', 'Emp6', 'leader2' --select * from @leaderdeclare @Employee Table ( EmployeeId varchar(10) ,ProjectID varchar(10), WorkingHours int)insert into @Employeeselect 'Emp1', 'Proj1', 110 union allselect 'Emp2', 'Proj1', 80 union allselect 'Emp2', 'Proj2', 10 union allselect 'Emp3', 'Proj2', 222 --select * from @Employeedeclare @Project Table (ProjectID varchar(10), ProjectName varchar(64))insert into @Projectselect 'Proj1','Projectname1' union allselect 'Proj2', 'Projectname2' union allselect 'Proj3', 'Projectname3' union allselect 'Proj4', 'Projectname4' declare @LeaderID varchar(30),@ProjectID varchar(30)select @LeaderID = 'leader1' ,@ProjectID = 'Proj1'Select a.LeaderID, a.EmployeeID, b.WorkingHours, c.ProjectIDfrom @Leader a left outer join @Employee b on b.EmployeeID = a.EmployeeID and b.ProjectID = @ProjectIDleft join @Project c on b.ProjectID = c.ProjectID and c.ProjectID = @ProjectID where LeaderID = @LeaderID[/code] |
 |
|
|
|
|
|
|
|