У меня запрос, который вытащил отчет, зависит от даты аудита, но я очень запутался в том, что команда GROUP не работает с тем, что я ожидаю для вывода.
Вот мои запросы,
SELECT prd.fldemployeeno `EmployeeNo`,
prd.fldorderid `OrderNo`,
prd.fldstarttime `TimeProcessed`,
COUNT(qua.seqid) `ErrorCount`,
COALESCE(qua.fldstarttime,(SELECT fldstarttime FROM tblproductionitl p
WHERE (p.fldglobalid = prd.fldglobalid)
AND p.fldprojectgroup=prd.fldprojectgroup
AND p.fldstarttime > prd.fldstarttime
AND prd.fldemployeeno != p.fldemployeeno
LIMIT 0,1)) AS `AuditDate`
FROM tblproductionitl prd
INNER JOIN tblisauditeditl aud
ON prd.fldglobalid=aud.fldid
LEFT JOIN tblqualityaudit qua
ON prd.fldglobalid=qua.fldid
AND prd.fldstarttime=qua.fldprodstarttime
GROUP BY prd.fldemployeeno,prd.fldorderid
HAVING `AuditDate` BETWEEN '2011-10-04 00:00:00' AND '2011-10-04 23:59:59'
ORDER BY `AuditDate`
И выход этого
+-------------+---------------+---------------------+------------+---------------------+
| EmployeeNo | OrderNo | TimeProcessed | ErrorCount | AuditDate |
+-------------+---------------+---------------------+------------+---------------------+
| PSAA50577 | 20110930n01 | 2011-10-04 10:41:23 | 3 | 2011-10-04 10:44:07 |
| PSAA50576 | 20111003n01 | 2011-10-03 11:39:52 | 1 | 2011-10-04 10:58:48 |
| PSAA50515 | 20110930n01 | 2011-10-04 10:44:07 | 1 | 2011-10-04 11:12:03 |
| PSAA50577 | 20111003n02 | 2011-10-03 12:22:33 | 1 | 2011-10-04 16:47:16 |
| PSAA50577 | 20110930n10 | 2011-10-01 18:27:09 | 1 | 2011-10-04 18:29:29 |
+-------------+---------------+---------------------+------------+---------------------+
А затем я удалил prd.fldorderid в команде GROUP, чтобы отчет был сгруппирован по базе только с EmployeeNo. Но вывод возвращает только 1 строку вместо трех. Пожалуйста, смотрите ниже запрос и вывод.
SELECT prd.fldemployeeno `EmployeeNo`,
prd.fldorderid `OrderNo`,
prd.fldstarttime `TimeProcessed`,
COUNT(qua.seqid) `ErrorCount`,
COALESCE(qua.fldstarttime,(SELECT fldstarttime FROM tblproductionitl p
WHERE (p.fldglobalid = prd.fldglobalid)
AND p.fldprojectgroup=prd.fldprojectgroup
AND p.fldstarttime > prd.fldstarttime
AND prd.fldemployeeno != p.fldemployeeno
LIMIT 0,1)) AS `AuditDate`
FROM tblproductionitl prd
INNER JOIN tblisauditeditl aud
ON prd.fldglobalid=aud.fldid
LEFT JOIN tblqualityaudit qua
ON prd.fldglobalid=qua.fldid
AND prd.fldstarttime=qua.fldprodstarttime
GROUP BY prd.fldemployeeno
HAVING `AuditDate` BETWEEN '2011-10-04 00:00:00' AND '2011-10-04 23:59:59'
ORDER BY `AuditDate`
И вывод для этого запроса:
+------------+--------------+---------------------+--------------+---------------------+
| EmployeeNo | OrderNo | TimeProcessed | ErrorCount | AuditDate |
+------------+--------------+---------------------+--------------+---------------------+
| PSAA50576 | 20111003n01 | 2011-10-03 11:39:52 | 1 | 2011-10-04 10:58:48 |
+------------+--------------+---------------------+--------------+---------------------+
Может ли кто-нибудь помочь мне проанализировать, как только 1 строка вернулась во втором запросе и как я могу сгруппировать базу вывода из Employee №.