2015-10-28 5 views
0

запроса:Расчет разницы во времени при выполнении запроса

SELECT products.product_name , 
employee.emp_name,employee.emp_code,process.process_name,timer_completed.worked_qty , 
FROM_UNIXTIME(timer_completed.start/1000,'%d-%m-%Y %H:%i:%s') as start, 
FROM_UNIXTIME(timer_completed.end/1000,'%d-%m-%Y %H:%i:%s') as end , 
FROM timer_completed 
INNER JOIN com_jobcard ON com_jobcard.id = timer_completed.job_card_id 
INNER JOIN products ON products.id = com_jobcard.product_id  
INNER JOIN employee ON employee.id = timer_completed.employee_id 
INNER JOIN process ON process.id = timer_completed.process_id 
INNER JOIN carat_percentage ON carat_percentage.id = com_jobcard.carat_id 
INNER JOIN groups ON groups.id = timer_completed.group_id 
INNER JOIN departments ON departments.id = groups.dept_id 
AND departments.id = '40'; 

ВЫВОД:

JCID-1151521 PRNG ARAVINTHAN.N  A4942 Brushing   0 07-07-2015 14:35:10  07-07-2015 14:43:45  
JCID-1149968 SRNL Sathya    A4535 Correction   29 07-07-2015 18:06:28  07-07-2015 18:32:33  
JCID-1149968 SRNL Sathya    A4535 Inside_Correction 29 07-07-2015 18:32:45  07-07-2015 18:42:44  
JCID-1149968 SRNL Pani Paul Prakash A3100 Lapping   30  08-07-2015 09:16:20  08-07-2015 09:16:46  
JCID-1149968 SRNL Pani Paul Prakash A3100 Nice    30  08-07-2015 13:14:36  08-07-2015 13:37:50  

Дорогие друзья из следующего запроса я получить результат, как показано ниже, но мой ожидаемый результат I» ve, чтобы суммировать значения SUM (timer_completed.worked_qty), чтобы время начала и окончания было вычтено, а значения должны быть суммированы параллельно. Я буду использовать группу employee.emp_code, поэтому работаемая сумма должна быть суммой, и для каждой итерации время начала и окончания должно быть вычтено ((07-07-2015 18:32:45) - (07- 07-2015 18:42:44)) и, наконец, сумма работавшего Кол и времени, затраченного должно быть дано в результате

ожидаемый результат

JCID-1151521 PRNG ARAVINTHAN.N  A4942 Brushing   0 0:0:35 
JCID-1149968 SRNL Sathya    A4535 Correction   58 0:23:47 
JCID-1149968 SRNL Pani Paul Prakash A3100 Lapping   60  0:3:50 
+0

вы можете использовать TIMESTAMPDIFF, SUM, GROUP BY статей –

+0

что имя поля (A4942, A4535, A3100)? –

ответ

0

Используйте следующий код

Заменить следующее код

FROM_UNIXTIME(timer_completed.start/1000,'%d-%m-%Y %H:%i:%s') as start, 
FROM_UNIXTIME(timer_completed.end/1000,'%d-%m-%Y %H:%i:%s') as end , 

С

TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(timer_completed.start/1000,'%d-%m-%Y %H:%i:%s'), FROM_UNIXTIME(timer_completed.end/1000,'%d-%m-%Y %H:%i:%s')) as res 

не стесняйтесь для комментариев

+0

Должен ли я использовать сумму и группу? – user1894647

+0

Выше код поможет вам рассчитать разницу во времени –

+0

Он возвращает NULL – user1894647

0

USE TIMESTAMPDIFF и GROUP BY и SUM MySQL функции.

Я редактировал весь запрос (при условии, A4942, A4535 являются process.ids)

SELECT products.product_name, employee.emp_name,employee.emp_code, 
process.process_name, 
SUM(timer_completed.worked_qty),SUM(timer_completed.start -timer_completed.end) as res, 
FROM timer_completed 
INNER JOIN com_jobcard ON com_jobcard.id = timer_completed.job_card_id 
INNER JOIN products ON products.id = com_jobcard.product_id  
INNER JOIN employee ON employee.id = timer_completed.employee_id 
INNER JOIN process ON process.id = timer_completed.process_id 
INNER JOIN carat_percentage ON carat_percentage.id = com_jobcard.carat_id 
INNER JOIN groups ON groups.id = timer_completed.group_id 
INNER JOIN departments ON departments.id = groups.dept_id 
AND departments.id = '40' 
GROUP BY process.id; 
+0

разность времени показывая NULL в результате – user1894647

+0

отредактировал мой ответ. вы получите timestamp diff в секундах сейчас –

+0

все еще возвращает NULL, мой полный код – user1894647