Mysql 需要帮助合并HP ALM的两个查询吗

Mysql 需要帮助合并HP ALM的两个查询吗,mysql,sql,alm,Mysql,Sql,Alm,我在HP ALM中有两个不同的查询,但我想合并并将其合并为一个查询。我不太擅长SQL查询,所以我在合并查询时面临困难 查询1:获取测试人员的执行计数 Select TESTCYCL.TC_ACTUAL_TESTER as 'Tester', sum(case when TC_Status In('Blocked','Passed','Failed','Not Completed') then 1 else 0 end) as 'Total', sum(case when TC_Status

我在HP ALM中有两个不同的查询,但我想合并并将其合并为一个查询。我不太擅长SQL查询,所以我在合并查询时面临困难

查询1:获取测试人员的执行计数

Select
 TESTCYCL.TC_ACTUAL_TESTER as 'Tester',
 sum(case when TC_Status In('Blocked','Passed','Failed','Not Completed') then 1 else 0 end) as 'Total',
 sum(case when TC_Status = 'Passed' then 1 else 0 end) as 'Pass',
 sum(case when TC_Status = 'Failed' then 1 else 0 end) as 'Fail',
 sum(case when TC_Status = 'Blocked' then 1 else 0 end) as 'Blocked',
 sum(case when TC_Status In('Not Completed','Defferred','N/A') then 1 else 0 end) as 'Others'

From  TESTCYCL
Where
 TESTCYCL.TC_EXEC_DATE = CAST(CURRENT_TIMESTAMP AS DATE)
 And
 TESTCYCL.TC_ACTUAL_TESTER in ('Username1')
 Group by TC_ACTUAL_TESTER
SELECT
 BG_DETECTED_BY,
 Sum(case when BG_Status Not in ('Closed','Defect Resolved','Rejected')then 1 else 0 end) as 'Defect Raised'
 FROM BUG
 Where BUG.BG_DETECTED_BY in ('username1')
 AND BUG.BG_DETECTION_DATE = CAST(CURRENT_TIMESTAMP AS DATE)
 Group by BG_DETECTED_BY
问题2:由测试人员提出缺陷

Select
 TESTCYCL.TC_ACTUAL_TESTER as 'Tester',
 sum(case when TC_Status In('Blocked','Passed','Failed','Not Completed') then 1 else 0 end) as 'Total',
 sum(case when TC_Status = 'Passed' then 1 else 0 end) as 'Pass',
 sum(case when TC_Status = 'Failed' then 1 else 0 end) as 'Fail',
 sum(case when TC_Status = 'Blocked' then 1 else 0 end) as 'Blocked',
 sum(case when TC_Status In('Not Completed','Defferred','N/A') then 1 else 0 end) as 'Others'

From  TESTCYCL
Where
 TESTCYCL.TC_EXEC_DATE = CAST(CURRENT_TIMESTAMP AS DATE)
 And
 TESTCYCL.TC_ACTUAL_TESTER in ('Username1')
 Group by TC_ACTUAL_TESTER
SELECT
 BG_DETECTED_BY,
 Sum(case when BG_Status Not in ('Closed','Defect Resolved','Rejected')then 1 else 0 end) as 'Defect Raised'
 FROM BUG
 Where BUG.BG_DETECTED_BY in ('username1')
 AND BUG.BG_DETECTION_DATE = CAST(CURRENT_TIMESTAMP AS DATE)
 Group by BG_DETECTED_BY
我已尝试内部联接/左联接,但用户引发的缺陷计数不匹配

问题3:我试过:

 Select
  TESTCYCL.TC_ACTUAL_TESTER as 'Tester',
  sum(case when TC_Status In('Blocked','Passed','Failed','Not Completed') then 1 else 0 end) as 'Total',
  sum(case when TC_Status = 'Passed' then 1 else 0 end) as 'Pass',
  sum(case when TC_Status = 'Failed' then 1 else 0 end) as 'Fail',
  sum(case when TC_Status = 'Blocked' then 1 else 0 end) as 'Blocked',
  sum(case when TC_Status In('Not Completed','Defferred','N/A') then 1 else 0 end) as 'Others',
  Sum(case when BG_Status Not in ('Closed','Defect Resolved','Rejected')then 1 else 0 end) as 'Defect Raised'

From  TESTCYCL 
Left Join BUG 
  on TESTCYCL.TC_ACTUAL_TESTER =  BUG.BG_DETECTED_BY 
 AND  BUG.BG_DETECTION_DATE = CAST(CURRENT_TIMESTAMP AS DATE)
Where TESTCYCL.TC_EXEC_DATE = CAST(CURRENT_TIMESTAMP AS DATE)
  And TESTCYCL.TC_ACTUAL_TESTER in ('username1')
Group by TC_ACTUAL_TESTER
我们的工作如下:

Expected Output:
Tester   Total Execution  Passed  Failed  ... Defect Raised
  A          5              3       2             10

Actual Output:
Tester   Total Execution  Passed  Failed  ... Defect Raised
  A          56              3       2             45

问题是您正在笛卡尔积上执行
COUNT()
。而不是连接结果

现在你正在做什么

   COUNT(A*B) instead of COUNT(A) || COUNT(B)
一般示例,如果有两个查询

SELECT * FROM A (ex: 10 rows)
SELECT * FROM B (ex: 10 rows)
您需要的是:

 SELECT temp1.*, temp2.*
 FROM (SELECT * FROM A) as temp1
 JOIN (SELECT * FROM B) as temp2
   ON temp1.ID = temp2.ID 

问题是您正在笛卡尔积上执行
COUNT()
。而不是连接结果

现在你正在做什么

   COUNT(A*B) instead of COUNT(A) || COUNT(B)
一般示例,如果有两个查询

SELECT * FROM A (ex: 10 rows)
SELECT * FROM B (ex: 10 rows)
您需要的是:

 SELECT temp1.*, temp2.*
 FROM (SELECT * FROM A) as temp1
 JOIN (SELECT * FROM B) as temp2
   ON temp1.ID = temp2.ID 


我们需要每个查询的样本数据和结果。因此,我们可以尝试达到您的预期输出。否则我们不知道去哪里start@JuanCarlosOropeza感谢您的及时回复,但是表架构太大,无法提供。我所能说的是,如果有人参与过HP ALM,那么他们会有更好的理解。请参阅模式TESTCYCL和我理解的BUG,但是您尝试创建一个MVC,以便我们能够理解它并进行测试。否则我们就得花很多时间来破译你所拥有的。也不能太大。测试仪A有5+3+2+10行。您可以提供该数据。您希望有多个用户名吗?否则,您应该使用
TC\u ACTUAL\u TESTER='username1'
我们需要每个查询的样本数据和结果。因此,我们可以尝试达到您的预期输出。否则我们不知道去哪里start@JuanCarlosOropeza感谢您的及时回复,但是表架构太大,无法提供。我所能说的是,如果有人参与过HP ALM,那么他们会有更好的理解。请参阅模式TESTCYCL和我理解的BUG,但是您尝试创建一个MVC,以便我们能够理解它并进行测试。否则我们就得花很多时间来破译你所拥有的。也不能太大。测试仪A有5+3+2+10行。您可以提供该数据。您希望有多个用户名吗?否则,您应该使用
TC\u ACTUAL\u TESTER='username1'
希望您可以创建一些模拟数据,而不是一些一般问题。虽然这里有一个通用的答案,但我会尝试上面的例子。并将尝试使用该表创建一个伪数据。请容忍我一会儿。谢谢你。。它是。*还是elsetemp1是第一个子查询的别名。所以temp1.*是该子查询中的所有字段。问题是什么?对不起,我不认为这个问题值得我花更多的时间。希望你能创建一些模拟数据,而不是一些一般性的问题。虽然这里有一个通用的答案,但我会尝试上面的例子。并将尝试使用该表创建一个伪数据。请容忍我一会儿。谢谢你。。它是。*还是elsetemp1是第一个子查询的别名。所以temp1.*是该子查询中的所有字段。问题是什么?对不起,我不认为这个问题值得我花更多的时间