Problema: Como obter requisitos aprovados onde existem 4 tabelas em tal relação requisitos-> links <-test_cases test_cases-> resultados <-resultado
Cenário:
Tabela1 - requisitos
id_requerido | status |
---|---|
req-1 | abrir |
req-2 | abrir |
Tabela2 - casos_teste
id_teste | status |
---|---|
tc-1 | abrir |
tc-2 | cancelado |
Tabela3 - links
link_id | id_requerido | id_teste |
---|---|---|
link-1 | req-1 | tc-1 |
link-2 | req-1 | tc-2 |
Tabela4 - resultados dos testes
id_resultado | id_teste | resultado |
---|---|---|
res-1 | tc-1 | passou |
res-2 | tc-2 | fracassado |
Até agora tentei essa abordagem para gerar uma tabela req_id | cnt_test_cases | cnt_results e tratar o requisito como aprovado quando cnt_test_cases = cnt_results(='passed') mas não funciona porque essas colunas calculadas não existem para a instrução 'Having' no final
SELECIONE requisitos DISTINTOS.req_id,
(SELECT COUNT (DISTINCT test_cases.test_id) FROM test_cases, links WHERE links.req_id = requisitos.req_id AND links.test_id = test_cases.test_id AND test_cases.status! = 'cancelled') como cnt_test_cases,
(SELECT COUNT (DISTINCT results.result) FROM results, links WHERE links.req_id = requisitos.req_id AND links.test_id = results.test_id AND results.reuslt = 'passed') como cnt_test_cases) como cnt_results
Tendo cnt_test_cases = cnt_results
Talvez haja uma abordagem melhor?
Uma solução seria agrupar o SELECT que você já possui em outro SELECT e então filtrar as diferenças na seleção externa usando a cláusula WHERE.
Algo assim:
Violino
Ao executar a seguinte consulta, podemos encontrar a matriz do seu conjunto de registros
como mostrado na imagem
Acho que você está tentando descobrir quantos testes cancelados e aprovados dependem do requisito. A consulta teve alguns erros, eu os comento.
O resultado é o seguinte