根据id使用PHP和MySQL计数传递,失败,跳过数字

时间:2017-01-23 18:30:30

标签: php mysql join count where-clause

我有四张表如下所示:

test_case (1 ='通过',2 ='失败',3 ='跳过')

id        testing_status
 1              1
 2              3
 3              1
 4              2
 5              3
 6              2
 7              2
 8              3

test_suite_with_case (在test_case表中使用test_case_id引用,在test_suite表中使用test_suite_id引用)

id        test_suite_id       test_case_id
 1              4             1,3,5,2,6,7,8
 2              3               2,5,4,6,7

test_suite

id        test_suite_name
 3            test_1
 4            test_2

test_suite_run (在test_suite表中使用test_suite_id引用)

id        test_suite_id       name
 1            3               BBH
 2            4               CXN

现在我想通过 id test_suite_run 运行 where 查询(例如test_suite_run中的id = 2),并希望输出外观如下所示:

id(test_suite_run)    name       test_suite_name   pass   fail   skip
 1                    CXN          test_suite_2      2     2       3 

我是PHP和MySQL的新手。

1 个答案:

答案 0 :(得分:0)

试试这个:

select 
    tr.id,
    tr.name,
    ts.test_suite_name,
    sum(testing_status = 1) pass,
    sum(testing_status = 2) fail,
    sum(testing_status = 3) skip
from test_suite_run tr
inner join test_suite ts on tr.test_suite_id = ts.id
inner join test_suite_with_case tsc on ts.id = tsc.test_suite_id
inner join test_case tc on find_in_set(tc.id, tsc.test_case_id) > 0
group by
    tr.id,
    tr.name,
    ts.test_suite_name;