2011-09-27 1 views
0

У меня есть форма PHP, которая вводит EmpId, projectNumber и часы-в/часы ожидания с отметкой времени в таблицу MySQL, как это:Как рассчитать количество рабочих часов для каждого проекта на одного работника

Не имея репутацию, я не может отправлять изображения, так смотрите здесь: screenshot http://mailed.in/timecard/ss1.jpg

Мне нужна помощь в создании отчета, который выглядит следующим образом: screenshot http://mailed.in/timecard/ss2.jpg

могу ли я сделать это полностью в MySQL? Как?

+0

Как проверить, что у них есть часы ожидания для каждого часы-в? –

+0

Я не проверяю. Если у них нет времени, запись просто не будет отображаться. –

+0

Ну, вы можете сопоставить строку с предыдущей строкой, соответствующей проекту, а затем использовать функцию даты, чтобы получить разницу. Тем не менее, мой страх (с отсутствующими данными), вы увидите вещи (потенциально) в течение дней. Кроме того, одно пропущенное время в/будет затем отменять любые будущие записи (после этого вы будете получать разницу от вне до, вместо того, чтобы выходить из него) –

ответ

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 | 
+-------+---------------+---------------------+-----------+ 
Смежные вопросы