0

我想创建 Sql 脚本来查看仅针对分配给任务结果 HelloWorld1(0) HelloWorld2(2) HelloWorld3(1) HelloWorld4(5) 的登录用户打开或暂停的任务

SELECT Projects.projectID,
    Projects.projectName + ' ' + '(' + CONVERT(NVARCHAR, COUNT(Projects_tasks.taskID)) + ')' AS Project
  FROM Projects
  LEFT JOIN Projects_tasks ON Projects.projectID = Projects_tasks.projectID
 INNER JOIN Users_projects ON Projects.projectID = Users_projects.projectID
 INNER JOIN Tasks ON Projects_tasks.taskID = Tasks.taskID
 INNER JOIN Users_Tasks ON Tasks.taskID = Users_Tasks.TaskID
 WHERE Users_Tasks.userID = @userID
   AND Tasks.status = 'Open'
   AND Tasks.status = 'Onhold'
 GROUP BY Users_projects.userID,
          Projects.projectName,
          Projects.projectID,
          Users_Tasks.userID

在此处输入图像描述

4

3 回答 3

1

你有:

AND (Tasks.status = 'Open' AND Tasks.status = 'Onhold') 

这不可能是真的;任务不能同时具有两个值。你要:

AND (Tasks.status = 'Open' OR Tasks.status = 'Onhold') 

更好的是,使用IN

AND (Tasks.status IN ('Open', 'Onhold') )
于 2012-09-20T19:15:12.857 回答
0

没有行将能够匹配:

(Tasks.status = 'Open' AND Tasks.status = 'Onhold')

尝试

(Tasks.status = 'Open' OR Tasks.status = 'Onhold')

或者:

Tasks.status in ('Open', 'Onhold')
于 2012-09-20T19:15:29.613 回答
0

正如已经评论过的,该AND子句不能满足,因为Task.Status只能是OpenOnHold。使用以下代码:

SELECT Projects.projectID,
    Projects.projectName + ' ' + '(' + CONVERT(NVARCHAR, COUNT(Projects_tasks.taskID)) + ')' AS Project
  FROM Projects
  LEFT JOIN Projects_tasks ON Projects.projectID = Projects_tasks.projectID
 INNER JOIN Users_projects ON Projects.projectID = Users_projects.projectID
 INNER JOIN Tasks ON Projects_tasks.taskID = Tasks.taskID
 INNER JOIN Users_Tasks ON Tasks.taskID = Users_Tasks.TaskID
 WHERE Users_Tasks.userID = @userID
   AND (Tasks.status = 'Open' OR Tasks.status = 'Onhold')
 --also this code can be used: 
 --AND Tasks.status in ('Open', 'Onhold')
 GROUP BY Users_projects.userID,
          Projects.projectName,
          Projects.projectID,
          Users_Tasks.userID
于 2012-09-20T19:27:43.640 回答