解决方案 »

  1.   

    试下group by projectid
           order by 时间
      

  2.   

    试下group by  projectid  时间
           order by  时间
      

  3.   

     恩,试过了,时间是升序排序了,但是projectid 列分组还是被打乱了
      

  4.   

    select a.*
    from(
     SELECT 
    `arrangement`.`projectid`,
     `arrangement`.`courseid`,
            `arrangement_date`.`date`,
     SUM(CASE WHEN `arrangement`.`traindays`=0 THEN `arrangement`.`time` ELSE `arrangement`.`traindays` END) AS `usetime`,
             GROUP_CONCAT(`teacher`.`name`  ORDER BY `teacher`.`name` ASC)  AS `teachername`
    FROM 
            `arrangement`
    INNER JOIN 
            `arrangement_date` 
             ON DATE(`arrangement_date`.`date`)  BETWEEN  DATE(`arrangement`.`startdate`) AND  DATE(`arrangement`.`enddate`)
        INNER JOIN 
            `teacher` 
             ON `teacher`.`id`=`arrangement`.`teacherid`
    WHERE 
             DATE(`arrangement_date`.`date`)  BETWEEN DATE('2015-1-1')  AND    date('2015-1-31')
        GROUP BY  
             `arrangement`.`projectid`,`arrangement`.`courseid`, `arrangement_date`.`date` 
    ) a
    order by  (select min(`date`) from (
     SELECT 
    `arrangement`.`projectid`,
     `arrangement`.`courseid`,
            `arrangement_date`.`date`,
     SUM(CASE WHEN `arrangement`.`traindays`=0 THEN `arrangement`.`time` ELSE `arrangement`.`traindays` END) AS `usetime`,
             GROUP_CONCAT(`teacher`.`name`  ORDER BY `teacher`.`name` ASC)  AS `teachername`
    FROM 
            `arrangement`
    INNER JOIN 
            `arrangement_date` 
             ON DATE(`arrangement_date`.`date`)  BETWEEN  DATE(`arrangement`.`startdate`) AND  DATE(`arrangement`.`enddate`)
        INNER JOIN 
            `teacher` 
             ON `teacher`.`id`=`arrangement`.`teacherid`
    WHERE 
             DATE(`arrangement_date`.`date`)  BETWEEN DATE('2015-1-1')  AND    date('2015-1-31')
        GROUP BY  
             `arrangement`.`projectid`,`arrangement`.`courseid`, `arrangement_date`.`date` 
    ) b where projectid=a.projectid),a.projectid

      

  5.   

     前辈, 执行了您的sql语句,结果如下:但是有点小问题,也是我疑惑的地方,理论上整体是升序排序的,但实际分组内的时间却没有升序排序,比如:projectid15的地方, date的顺序为啥就乱了?
      

  6.   

            `arrangement`.`projectid`,`arrangement`.`courseid`, `arrangement_date`.`date` 
    ) b where projectid=a.projectid),a.projectid,a.`date`