Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

कर्मचारी चेक-इन और चेक-आउट का प्रतिनिधित्व करने के लिए डिज़ाइन

मुझे पता है कि यह पोस्ट पुरानी है, लेकिन यह किसी ऐसे व्यक्ति के लिए है जो अभी भी समाधान ढूंढ रहा है:

उपस्थिति तालिका संरचना

id              | int
employee_code   | varchar
status          | enum('check_in','check_out')
created         | datetime

डेटा

id  employee_code   status          created

1   EMP0001         check_in        2016-08-20 09:30:30
2   EMP0001         check_out       2016-08-20 18:15:00
3   EMP0002         check_in        2016-08-21 14:52:48
4   EMP0002         check_out       2016-08-21 21:09:18

क्वेरी

SELECT 
  A1.employee_code,
  A1.created AS check_in_at,
  A2.created AS check_out_at,
  TIMEDIFF(A2.created, A1.created) AS total_time 
FROM
  tbl_attendances AS A1 
  INNER JOIN tbl_attendances AS A2 
    ON A1.employee_code = A2.employee_code 
    AND DATE(A1.created) = DATE(A2.created) 
WHERE 1 = 1 
  AND A1.status = 'check_in' 
  AND A2.status = 'check_out' 
  AND DATE(A1.created) BETWEEN '2016-08-20' 
  AND '2016-08-21' 
  AND DATE(A2.created) BETWEEN '2016-08-20' 
  AND '2016-08-21' 
ORDER BY A1.created DESC

परिणाम

employee_code   check_in_at            check_out_at           total_time

EMP0002         2016-08-21 14:52:48    2016-08-21 21:09:18    06:16:30
EMP0001         2016-08-20 09:30:30    2016-08-20 18:15:00    08:44:30

विशिष्ट कर्मचारी के लिए AND A1.employee_code = 'EMP0001' जोड़ें WHERE . में खंड



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पहले से मौजूद डेटाबेस के आसपास फ्लास्क एप्लिकेशन कैसे बनाएं?

  2. लारावेल में खराब जहां का प्रदर्शन है

  3. मैं mysqldump से आउटपुट को छोटी फाइलों में कैसे विभाजित करूं?

  4. MySQL के साथ मौजूदा डेटाबेस को अटैच करना

  5. MySQL - सबसे कम और सबसे बड़ा तुलना ऑपरेटर