직원

2011-09-27 6 views
0

나는이 같은 MySQL의 테이블에 EMPID, projectNumber 및 클럭 인/시계 아웃 시간 스탬프를 입력하는 PHP 양식이 당 프로젝트 당 작업 시간을 계산하는 방법 : 어떤 평판이없는직원

을, I 이미지를 게시, 그래서 여기 좀 봐 할 수 없습니다 screenshot http://mailed.in/timecard/ss2.jpg

내가 MySQL은 전적으로이 작업을 수행 할 수 있습니다 I는 다음과 같습니다 보고서를 생성에 도움이 필요 screenshot http://mailed.in/timecard/ss1.jpg

? 방법?

+0

를? –

+0

확인하지 않습니다. 그들이 클럭 아웃하지 않았다면 그 기록은 보여주지 않을 것입니다. –

+0

글쎄, 행을 프로젝트와 일치하는 이전 행과 상관시킨 다음 날짜 함수를 사용하여 차이를 얻을 수 있습니다. 그러나 내 두려움은 (데이터가 없다면) 잠재적으로 일을 시간의 흐름으로 보게 될 것입니다. 또한, 하나의 시계를 놓쳤다가 나중에 미래의 엔트리를 뒤집을 것입니다. (이후에는 out에서 out으로 바꾼다) –

답변

0

이 당신을 도울 수 있습니다

SELECT 
    empID AS EmpID, 
    projectNumber AS ProjectNumber, 
    DATE(clocktime) AS StartDate, 
    TIMEDIFF(
     (SELECT max(clocktime) from tableName where DATE(`clocktime`) = CURDATE()), 
     (SELECT min(clocktime) from tableName where DATE(`clocktime`) = CURDATE()) 
    ) AS WorkHours 
FROM `tableName` 
WHERE 
DATE(`clocktime`) = CURDATE() 
GROUP BY empID 
0

이 쿼리 시도 - 당신은 그들이 모든 시계에 대한 클럭 아웃이 있는지 확인하려면 어떻게

CREATE TABLE table_proj (
    empid INT(11) DEFAULT NULL, 
    projectnumber INT(11) DEFAULT NULL, 
    clocktime DATETIME DEFAULT NULL 
); 

INSERT INTO table_proj VALUES 
    (1, 1, '2011-09-27 10:02:22'), 
    (1, 1, '2011-09-27 11:17:32'), 
    (2, 2, '2011-09-27 11:34:13'), 
    (3, 3, '2011-09-27 11:01:21'), 
    (3, 3, '2011-09-27 13:36:28'), 
    (2, 2, '2011-09-27 13:55:39'), 
    (4, 4, '2011-09-27 14:25:07'); 

SELECT 
    empid, projectnumber, MIN(clocktime) startdate, TIMEDIFF(MAX(clocktime), MIN(clocktime)) workhours 
FROM 
    table_proj 
GROUP BY 
    empid, projectnumber 
HAVING 
    COUNT(*) = 2; 

+-------+---------------+---------------------+-----------+ 
| empid | projectnumber | startdate   | workhours | 
+-------+---------------+---------------------+-----------+ 
|  1 |    1 | 2011-09-27 10:02:22 | 01:15:10 | 
|  2 |    2 | 2011-09-27 11:34:13 | 02:21:26 | 
|  3 |    3 | 2011-09-27 11:01:21 | 02:35:07 | 
+-------+---------------+---------------------+-----------+ 
관련 문제