问题:如何传递有 4 个表的关系需求:需求->链接<-test_cases,测试用例->结果<-结果
设想:
表 1 - 要求
请求编号 | 地位 |
---|---|
要求-1 | 打开 |
要求-2 | 打开 |
表 2 - 测试用例
测试编号 | 地位 |
---|---|
TC-1 | 打开 |
TC-2 | 取消 |
表 3 - 链接
链接 ID | 请求编号 | 测试编号 |
---|---|---|
链接-1 | 要求-1 | TC-1 |
链接-2 | 要求-1 | TC-2 |
表4-测试结果
结果 ID | 测试编号 | 结果 |
---|---|---|
res-1 | TC-1 | 已通过 |
res-2 | TC-2 | 失败的 |
到目前为止,我已经尝试了这种方法来生成表 req_id | cnt_test_cases | cnt_results,并在 cnt_test_cases = cnt_results(='passed') 时将要求视为已通过,但它不起作用,因为这些计算列在最后的“Having”语句中不存在
选择不同的需求.req_id,
(从 test_cases、links 中选择 COUNT(DISTINCT test_cases.test_id),其中 links.req_id = requirements.req_id 并且 links.test_id = test_cases.test_id 并且 test_cases.status !='cancelled')作为 cnt_test_cases,
(从结果中选择 COUNT(DISTINCT results.result),链接,其中 links.req_id = requirements.req_id 和 links.test_id = results.test_id 和 results.reuslt = 'passed')作为 cnt_test_cases)作为 cnt_results
具有 cnt_test_cases = cnt_results
也许有更好的方法?
一种解决方案是将已有的 SELECT 包装到另一个 SELECT 中,然后使用 WHERE 子句过滤外部选择中的差异。
像这样:
小提琴
通过运行以下查询,我们可以找到您的记录集矩阵
如图所示
我认为您是在尝试根据需求找出有多少测试被取消和通过。查询有一些错误,我对此进行了评论。
结果如下