2013-10-18 93 views
1

我从参加这样的程序MySQL的数据(表):登录注销考勤检查时间

+--------+--------------------+-----------+ 
| userid | checktime   | checktype | 
+-----------------------------+-----------+ 
|  1 | 26/04/2013 8:05:17 | I   | 
|  2 | 26/04/2013 8:05:17 | I   | 
|  2 | 26/04/2013 17:28:47| O   | 
|  3 | 26/04/2013 17:32:24| O   | 
+-----------------------------------------+ 

,我想预览这样的:

+--------+--------------------+---------------------+ 
| userid | Login time   | Logout time   | 
+-----------------------------+---------------------+ 
|  1 | 26/04/2013 8:05:17 | Null    | 
|  2 | 26/04/2013 8:05:17 | 26/04/2013 17:28:47 | 
|  3 | Null    | 26/04/2013 17:32:24 | 
+---------------------------------------------------+ 

我应该怎么写查询预览此输出?任何建议将是me.please帮助有帮助...

+0

应该假设只能找到2个相同的userid,每个都有'I'或'O',对吗? –

+1

用户3如何在不首先登录的情况下注销? –

+0

就像司机一样,在下午结账。有时候人们忘记了登记(指纹程序)。时间表可以在班次表中找到 – empugandring

回答

1

与您提供此查询应该这样做的信息:

SELECT 
    userid, 
    max(if(checktype = 'I', checktime, NULL)) loginTime, 
    max(if(checktype = 'O', checktime, NULL)) logoutTime 
FROM t 
GROUP BY userid 

输出:

| USERID |   LOGINTIME |   LOGOUTTIME | 
|--------|--------------------|---------------------| 
|  1 | 26/04/2013 8:05:17 |    (null) | 
|  2 | 26/04/2013 8:05:17 | 26/04/2013 17:28:47 | 
|  3 |    (null) | 26/04/2013 17:32:24 | 

小提琴here