应用场景:
页面展示的模板审核状态的规则如下:
待提交:sub_status为 未提交 审核通过:至少1个素材审核通过 审核不通过:素材全部审核不通过 审核中:其他
通过sql语句查询出页面展示的模板审核状态
表:
CREATE TABLE TPL_MEDIA_AUDIT( ID INT PRIMARY KEY auto_increment, TEMP_ID INT NOT NULL DEFAULT 0 comment '素材所属模板id', MEDIA_ID INT NOT NULL DEFAULT 0 comment '素材id', SUB_STATUS INT NOT NULL DEFAULT 0 comment '0-未提交 1-已提交', AUDIT_STATUS INT NOT NULL DEFAULT 0 comment '0 审核中 1素材审核成功 2素材审核不通过 ', CREATE_TIME DATETIME DEFAULT NOW(), UPDATE_TIME DATETIME DEFAULT NOW() );
说明:一个模板包含一个或多个素材,提交模板后,将提交状态改为已提交。程序将模板中的素材提交审核平台,审核完成后更新表的素材审核状态。
表中的数据:
insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1001,100101,0,0); insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1001,100102,0,0); insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1002,100201,1,1); insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1002,100202,1,0); insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1002,100203,1,0); insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1003,100301,1,1); insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1003,100302,1,1); insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1003,100303,1,2); insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1004,100401,1,2); insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1004,100402,1,2); insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1004,100403,1,2);
根据group by 、count (case when)分组分类查询,sql语句如下
select media.TEMP_ID, CASE WHEN media.toSubmitCount > 0 THEN '待提交' WHEN media.approvedCount > 0 THEN '审核通过' WHEN media.noapprovedCount = media.total THEN '审核不通过' else '审核中'END state from ( select TEMP_ID, count(*) total, -- 总条数 count(CASE WHEN SUB_STATUS = 0 THEN '0' END) toSubmitCount, -- 待提交的条数 count(CASE WHEN AUDIT_STATUS = 0 THEN '0'END) toapproveCount, -- 审核中的条数 count(CASE WHEN AUDIT_STATUS = 1 THEN '0'END) approvedCount, -- 审核通过的条数 count(CASE WHEN AUDIT_STATUS = 2 THEN '0'END) noapprovedCount -- 审核不通过的条数 from TPL_MEDIA_AUDIT group by TEMP_ID -- 根据tmpl_id分组 ) media
查询结果如下:
加查询条件:审核状态为”待提交”,查询结果如下: