0

我有两个名为 REQUESTS 和 OPENISSUES 的大表。一个保存请求信息,另一个保存每个请求的问题数量。

在 REQUESTS 表中有一个状态列,用于跟踪请求状态。

我正在寻找一个查询,该查询计算 OPENISSUES 表中所有未将状态设置为“已关闭”的请求的记录

我的查询计算所有记录,但不会在一行中返回结果。我得到每个请求的结果。有人有想法吗?

这是我的查询:

SELECT
(SELECT COUNT(ID) FROM openissues WHERE openissues.requestID=requests.ID) AS TotalIssues
FROM requests
WHERE requests.status<>'Closed'

在这一点上,任何想法都是受欢迎的。否则我将开始计算 ASP 中的记录。

问候, 弗里茨

4

3 回答 3

0

我认为您需要的只是一个联接:

  SELECT count(*) as TotalIssues
  FROM openissues o
  INNER JOIN requests r ON ( o.requestID = r.ID )
  WHERE r.status != 'Closed'
于 2014-08-05T14:45:37.287 回答
0
SELECT count(DISTINCT openissues.requestID)  
FROM openissues
INNER JOIN requests ON openissues.requestID = requests.ID 
WHERE rq.status <> 'Closed' 

或者

SELECT count(*)
FROM openissues
INNER JOIN requests ON openissues.requestID = requests.ID 
WHERE rq.status <> 'Closed' 
GROUP BY openissues.requestID

这些查询将计算 requests 表中至少有一条未处于 Closed 状态的记录的 requestID 的数量。

注意@ypercube

它不会将相同的 requestID 计算两次(就像 Bowlturner 可能的那样)。

于 2014-08-05T14:50:01.383 回答
0

这当然是你想要的。

SELECT count(*) 
FROM openissues op, requests rq 
WHERE op.requestID = rq.ID and rq.status <> 'Closed'

或者

SELECT count(*) 
FROM openissues op INNER JOIN requests rq ON op.requestID = rq.ID
WHERE rq.status <> 'Closed'
于 2014-08-05T14:39:13.967 回答