2

Is this structure with IN is right or wrong this gives me error

SELECT TblProjectResources.UserId 
FROM TblTasks,TblProjectResources 
WHERE TblTasks.ProjectId=TblProjectResources.ProjectId 
AND TblTasks.TaskId=@TaskId AND TblProjectResources.IsRemoved=0 
AND TblProjectResources.UserId IN(
     (SELECT UserId 
      FROM TblProjectResources 
      WHERE IsRemoved=0 
      AND ProjectApproval=1 
      AND ProjectId=@ProjectId) 
     or 
     (SELECT TblAssignments.AssigneeId 
      FROM TblTasks,TblAssignments 
      WHERE TblTasks.TaskId=TblAssignments.AssignmentEntityId 
      AND TblAssignments.AssignmentEntity='Task' 
      AND TblTasks.TaskId=@TaskId) 
     or 
      (SELECT UserId FROM TblProjects WHERE ProjectId=@ProjectId)
)
Himanshu
  • 31,810
  • 31
  • 111
  • 133
  • You need to indicate what the error you're getting is. What is the message? Also, what are you trying to do? Have you tried to simplify the SQL to debug a simpler version? Have you googled for the error message? What did you find? – EdC Sep 15 '12 at 04:29

2 Answers2

0

I think you are trying to use TblProjectResources.UserId IN trice with OR try like this:

AND (TblProjectResources.UserId IN
         (SELECT UserId 
         FROM TblProjectResources 
         WHERE IsRemoved=0 
         AND ProjectApproval=1 
         AND ProjectId=@ProjectId) 
     OR
     TblProjectResources.UserId IN 
         (SELECT TblAssignments.AssigneeId 
         FROM TblTasks,TblAssignments 
         WHERE TblTasks.TaskId=TblAssignments.AssignmentEntityId 
         AND TblAssignments.AssignmentEntity='Task' 
         AND TblTasks.TaskId=@TaskId) 
     OR
     TblProjectResources.UserId IN
      (SELECT UserId FROM TblProjects WHERE ProjectId=@ProjectId)
)
Himanshu
  • 31,810
  • 31
  • 111
  • 133
0

@hims056 answer should work for you. Just as an alternate, you can try replace the OR with UNION / UNION ALL instead. That should work too.

SELECT TblProjectResources.UserId 
FROM TblTasks,TblProjectResources 
WHERE TblTasks.ProjectId=TblProjectResources.ProjectId 
AND TblTasks.TaskId=@TaskId AND TblProjectResources.IsRemoved=0 
AND TblProjectResources.UserId IN(
     (SELECT UserId 
      FROM TblProjectResources 
      WHERE IsRemoved=0 
      AND ProjectApproval=1 
      AND ProjectId=@ProjectId) 
     UNION 
     (SELECT TblAssignments.AssigneeId 
      FROM TblTasks,TblAssignments 
      WHERE TblTasks.TaskId=TblAssignments.AssignmentEntityId 
      AND TblAssignments.AssignmentEntity='Task' 
      AND TblTasks.TaskId=@TaskId) 
     UNION 
      (SELECT UserId FROM TblProjects WHERE ProjectId=@ProjectId)
)
Jagmag
  • 10,283
  • 1
  • 34
  • 58