2

Inを使用したこの構造は正しいですか、それとも間違っていますか?これによりエラーが発生します

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)
)
4

2 に答える 2

0

私はあなたが次のようにtryTblProjectResources.UserId INでtriceを使おうとしていると思いますOR

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)
)
于 2012-09-15T04:28:53.247 に答える
0

@hims056の答えはあなたのために働くはずです。別の方法として、代わりにORをUNION /UNIONALLに置き換えてみることができます。それもうまくいくはずです。

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)
)
于 2012-09-15T04:31:45.003 に答える