Mysql Query查找每个用户已成功登录的最后日期时间

时间:2017-06-21 09:44:35

标签: php mysql

我有两张桌子"信用卡"和" logadm"。在"信誉"是"用户"并且在" logadm"存储他们登录网站的记录。结构如下:

table creds
-----------
id  username    password
1   vasek       12345
2   roman       12345
3   jan         12345

table logadm
------------
id  user    ip          datum                   prihl
41  vasek   127.0.0.1   2017-06-21 10:50:19     1
40  roman   127.0.0.1   2017-06-21 10:49:50     0
39  vasek   127.0.0.1   2017-06-21 10:49:36     1
...

我有查询,显示每个用户及其上次登录的日期时间。 (还有尚未登录的用户):

SELECT username,MAX(logadm.datum) datum
FROM creds
LEFT JOIN logadm
ON username = user
GROUP BY username

输出:

Name    Last login
jan 
roman   2017-06-21 10:49:50
vasek   2017-06-21 10:50:19

我想向所有用户展示并为每个存在的用户显示他们上次成功登录的信息。" logadm"在" prihl"第0列或第1列.1表示登录成功,0表示不是 - 错误"用户名"或"密码"。如果用户尚未成功登录,则他将在列中输入单元格"上次登录"空。

此外,如果有人可以在评论中告诉我为什么在" MAX(logadm.datum)"之后的原始查询中?再次列的名称"数据" - MAX(logadm.datum)数据

1 个答案:

答案 0 :(得分:0)

您需要在查询中添加where语句,如下所示:

SELECT username as name,MAX(logadm.datum) LastLogin
FROM creds
LEFT JOIN logadm
ON username = user
WHERE prihl = 1
GROUP BY username

此外,MAX(logadm.datum) datumMAX(logadm.datum) AS datum的简写,是将列名更改为您想要的任何内容。

修改

MAX(logadm.datum) datum不是必需的。就在这里,它使得返回的数据显示为datum而不是MAX(logadm.datum)以便于访问。如果您不小心删除它,您可能会使用查询中断代码。