回答編集履歴

1

sample

2019/01/08 09:29

投稿

yambejp
yambejp

スコア115010

test CHANGED
@@ -1,3 +1,53 @@
1
1
  データの持ち方はマストでしょうか?
2
2
 
3
3
  1出勤に対して1退社ですから出勤と退社を1データで管理すると相当楽になると思いますが
4
+
5
+
6
+
7
+ # sample
8
+
9
+ とりあえず休憩時間はおいておきます
10
+
11
+
12
+
13
+ ```SQL
14
+
15
+ create table tbl (id int primary key auto_increment,pid int null,no int,office set('出勤','退勤','休憩開始','休憩終了'),d datetime);
16
+
17
+ insert into tbl values
18
+
19
+ (20,null,9998,'出勤','2018-12-26 12:48'),
20
+
21
+ (21,null,9999,'出勤','2018-12-26 12:48'),
22
+
23
+ (23,20,9998,'退勤','2018-12-26 16:04'),
24
+
25
+ (28,21,9999,'退勤','2018-12-26 18:21'),
26
+
27
+ (36,null,1,'出勤','2018-12-28 11:42'),
28
+
29
+ (37,36,1,'退勤','2018-12-28 16:24');
30
+
31
+ ```
32
+
33
+ 退勤時間に対して出勤時間を親として親子関係があれば以下のように書けます
34
+
35
+ ```SQL
36
+
37
+ select t1.id,
38
+
39
+ t1.no,
40
+
41
+ t1.d as `出勤日時`,
42
+
43
+ t2.d as `退勤日時`,
44
+
45
+ timediff(t2.d,t1.d)as `勤務時間`
46
+
47
+ from tbl as t1
48
+
49
+ inner join tbl as t2
50
+
51
+ on t1.id=t2.pid
52
+
53
+ ```