我有两张桌子"信用卡"和" 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)数据
答案 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) datum
是MAX(logadm.datum) AS datum
的简写,是将列名更改为您想要的任何内容。
修改强>
MAX(logadm.datum) datum
不是必需的。就在这里,它使得返回的数据显示为datum
而不是MAX(logadm.datum)
以便于访问。如果您不小心删除它,您可能会使用查询中断代码。