Mysql 需要帮助合并HP ALM的两个查询吗
我在HP ALM中有两个不同的查询,但我想合并并将其合并为一个查询。我不太擅长SQL查询,所以我在合并查询时面临困难 查询1:获取测试人员的执行计数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
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.*是该子查询中的所有字段。问题是什么?对不起,我不认为这个问题值得我花更多的时间