56,678
社区成员
发帖
与我相关
我的任务
分享
DROP TABLE IF EXISTS temp_arrangement;
CREATE TABLE temp_arrangement
SELECT
`arrangement`.`id`,
`arrangement`.`projectid`,
`arrangement`.`courseid`,
`arrangement_date`.`date` AS `traindate`,
GROUP_CONCAT(`arrangement`.`teacherid` ORDER BY `arrangement`.`teacherid` ASC) AS `teacherids`,
`arrangement`.`commissionerids` AS `commissionerids`,
GROUP_CONCAT(DISTINCT `commissioner`.`name` ORDER BY `commissioner`.`id` ASC) AS `commissionernames`,
`arrangement`.`time`,
`arrangement`.`traindays`,
SUM(CASE WHEN `arrangement`.`traindays`=0 THEN `arrangement`.`time` ELSE `arrangement`.`traindays` END) AS `usetime`
FROM
`arrangement`
INNER JOIN
`arrangement_date`
ON
DATE(`arrangement_date`.`date`) BETWEEN DATE(`arrangement`.`startdate`) AND DATE(`arrangement`.`enddate`)
LEFT JOIN
`commissioner`
ON FIND_IN_SET(`commissioner`.`id`,`arrangement`.`commissionerids`)
WHERE DATE( `arrangement_date`.`date`) BETWEEN DATE('2015-07-01') AND DATE('2015-07-10')
GROUP BY `arrangement`.`projectid`,`arrangement`.`courseid`, `arrangement_date`.`date` ;
SELECT a.* FROM temp_arrangement AS a ORDER BY
(SELECT MIN(b.traindate) FROM temp_arrangement AS b WHERE projectid=a.projectid),a.projectid,a.traindate;
SELECT TT.*,
GROUP_CONCAT(TT.`teacherid`
ORDER BY TT.`teacherid` ASC) AS `teacherids`,
SUM(CASE TT.`traindays` WHEN 0 THEN TT.`time`
ELSE TT.`traindays` END) AS `usetime`
FROM
(
SELECT
`arrangement`.`id`,
`arrangement`.`projectid`,
`arrangement`.`courseid`,
`arrangement_date`.`date` AS `traindate`,
`arrangement`.`commissionerids` AS `commissionerids`,
`arrangement`.`teacherid`,
GROUP_CONCAT(DISTINCT `commissioner`.`name`
ORDER BY `commissioner`.`id` ASC) AS `commissionernames`,
`arrangement`.`time`,
`arrangement`.`traindays`
FROM
`arrangement`
INNER JOIN
`arrangement_date`
ON
DATE(`arrangement_date`.`date`) BETWEEN
DATE(`arrangement`.`startdate`) AND DATE(`arrangement`.`enddate`)
LEFT JOIN
`commissioner`
ON FIND_IN_SET(`commissioner`.`id`,`arrangement`.`commissionerids`)
WHERE DATE( `arrangement_date`.`date`) BETWEEN
DATE('2015-07-01') AND DATE('2015-07-10')
GROUP BY `arrangement`.`projectid`,`arrangement`.`courseid`,
`arrangement`.`teacherid`, `arrangement_date`.`date`
) AS TT
GROUP BY TT.`projectid`, TT.`courseid`,
TT.`traindate` ;
SELECT TT.*,
GROUP_CONCAT(TT.`teacherid` ORDER BY TT.`teacherid` ASC) AS `teacherids`
FROM
(
SELECT
`arrangement`.`id`,
`arrangement`.`projectid`,
`arrangement`.`courseid`,
`arrangement_date`.`date` AS `traindate`,
`arrangement`.`commissionerids` AS `commissionerids`,
`arrangement`.`teacherid`,
GROUP_CONCAT(DISTINCT `commissioner`.`name`
ORDER BY `commissioner`.`id` ASC) AS `commissionernames`,
`arrangement`.`time`,
`arrangement`.`traindays`,
SUM(CASE WHEN `arrangement`.`traindays`=0 THEN `arrangement`.`time`
ELSE `arrangement`.`traindays` END) AS `usetime`
FROM
`arrangement`
INNER JOIN
`arrangement_date`
ON
DATE(`arrangement_date`.`date`) BETWEEN
DATE(`arrangement`.`startdate`) AND DATE(`arrangement`.`enddate`)
LEFT JOIN
`commissioner`
ON FIND_IN_SET(`commissioner`.`id`,`arrangement`.`commissionerids`)
WHERE DATE( `arrangement_date`.`date`) BETWEEN
DATE('2015-07-01') AND DATE('2015-07-10')
GROUP BY `arrangement`.`projectid`,`arrangement`.`courseid`,
`arrangement`.`teacherid`, `arrangement_date`.`date`
) AS TT
GROUP BY TT.`projectid`, TT.`courseid`,
TT.`traindate` ;