Currently i'm stuck for searching best query to make a resume of attendance log database.
Here is the current layout of 'absen' table:
id|employee_id| log |status
1 | 1 | 2019-03-27 07:58:32 | in
2 | 1 | 2019-03-27 07:58:38 | in
3 | 1 | 2019-03-27 17:12:34 | out
4 | 2 | 2019-03-26 07:45:12 | in
5 | 2 | 2019-03-26 18:22:54 | out
6 | 1 | 2019-03-28 07:45:38 | in
7 | 1 | 2019-03-28 17:10:55 | out
8 | 2 | 2019-03-27 07:59:02 | in
9 | 2 | 2019-03-27 18:35:16 | out
And here is the goal
employee_id| in | out
2 | 2019-03-26 07:45:12 | 2019-03-26 18:22:54
1 | 2019-03-27 07:58:32 | 2019-03-27 17:12:34
2 | 2019-03-27 07:59:02 | 2019-03-27 18:35:16
1 | 2019-03-28 07:45:38 | 2019-03-28 17:10:55
(ORDER BY in ASC)
I already try this query:
SELECT
dateng.e_idIN AS "PIN",
MASUK,
PULANG
FROM
(
SELECT
MIN(log) AS "MASUK",
employee_id AS e_idIN
FROM
absen
WHERE
status = "in"
GROUP BY
log
) dateng
INNER JOIN(
SELECT
MAX(log) AS "PULANG",
employee_id AS e_idOUT
FROM
absen
WHERE
status = "out"
GROUP BY
log
) pergi
ON
dateng.e_idIN = pergi.e_idOUT
but the result is not as expected
PIN | MASUK | PULANG
2 | 2019-03-26 07:45:12 | 2019-03-27 18:35:16
2 | 2019-03-26 07:45:12 | 2019-03-26 18:22:54
1 | 2019-03-27 07:58:32 | 2019-03-28 17:10:55
1 | 2019-03-27 07:58:32 | 2019-03-27 17:12:34
1 | 2019-03-27 07:58:38 | 2019-03-28 17:10:55
1 | 2019-03-27 07:58:38 | 2019-03-27 17:12:34
2 | 2019-03-27 07:59:02 | 2019-03-27 18:35:16
2 | 2019-03-27 07:59:02 | 2019-03-26 18:22:54
1 | 2019-03-28 07:45:38 | 2019-03-28 17:10:55
1 | 2019-03-28 07:45:38 | 2019-03-27 17:12:34
Any clue for this task?