现在有4张表:表一:jy_qualitytaskdet 细表,以此表为主表,查出符合要求的总数进行分组,用得到的字段create_date是时间,第一个条件,分别需要取2个月的数据,根据时间进行分组
,表二:jy_qualitytask 粗表,作为表关联的中转细表的jy_qtcode存的是粗表的id
,表三:t_s_base_user 成员表,保存了成员的信息,根据粗表中字段jobnum等于成员表中字段jobnum而中转进行关联,第二个条件,成员表中Iscorrect为是否转正,字段值即为‘是’与‘否’,根据这两个值进行分组
,表四:jy_qualityitem 内容表,该表的id为细表的jy_qticode字段,然而此表自身分父子ID(id与pid字段),大类id为001-005顺序排序,小类id从006开始到某个数字(目前是023),小类自身关联着大类,通过小类的pid存入大类的id实现,而细表中jy_qticode中只存入小类的id,但是最终结果要求根据小类所关联的大类ID进行大类的分组,即分为5组
,如下是我写的sql:
select count(a.id) num,d.pid xiangmu,c.Iscorrect yesor
from jy_qualitytaskdet a
LEFT JOIN jy_qualitytask b ON a.jy_qtcode = b.id
LEFT JOIN t_s_base_user c ON c.jobnum = b.jobnum
LEFT JOIN jy_qualityitem d ON d.id = a.jy_qticode
WHERE DATE_FORMAT( a.create_date, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
GROUP BY d.pid,c.Iscorrect;
最终结果是按照时间与是否分为4个数组,每个数组按照001-005分成5个元素
,但是有几个问题:
1.取出的数据需是按照001-005;是否;两个时间段进行分组的,那么应该是拥有20个数据类型,但是我将他们取到后台之后有可能会出现某个值为null的情况而导致全部数据乱序,应该怎样在sql语句中就进行判断使null值变为0,否则岂不是要写20个if语句;
2.排序,怎样排序成
001,是,第一个时间段
002,是,第一个时间段
003,是,第一个时间段
.....
001,否,第一个时间段
002,否,第一个时间段
.....
001,是,第二个时间段
.....
这样的格式
3.时间需要从前台传入后台的一个时间字段的参数进行判断,但是本人对于AJAX一窍不通,能够以怎样的方式动态获取数据,如果非要用AJAX能不能直接提供完成的代码加上注释最好,感激不尽
4,最多写2条sql,我现在是按照时间来分成2条sql写的
使用的框架是JEECG,echarts,数据库是mysql