SQL结合计数结果

时间:2014-08-05 14:20:47

标签: sql count inner-join multiple-results

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

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

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

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

以下是我的问题:

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

此时欢迎任何想法。 否则我将开始计算ASP中的记录。

此致 料

3 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

我认为你需要的只是一个加入:

  SELECT count(*) as TotalIssues
  FROM openissues o
  INNER JOIN requests r ON ( o.requestID = r.ID )
  WHERE r.status != 'Closed'

答案 2 :(得分: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

这些查询将计算请求表中至少有一条记录未处于“已关闭”状态的requestID数。

@ypercube注意事项

它不会计算两次相同的requestID(就像碗贩一样)。