我正在使用mysql和visual basic进行登录/退出程序,需要一点帮助。
我有两个表event_in
和event_out
,在每个表下我都有event_id
,它会自动为每一行生成一个数字(从1开始)。我想知道是否可以根据用户生成数字。
所以我们假设用户A来了并登录,1生成了event_id。然后用户B来了并登录。我想要为他生成1 ...所以用户A的event_id将是1,2,3 ...并且进出表中的每个用户的event_id也将是相同的。
有了这个,我将能够从event_out
中删除event_in
中每个用户的时间戳,以获得他们所处的时长。
我相信如果我没有为每个用户单独生成数字,那么让我们说用户A登录(event_id
表中为event_in
生成1)但是没有注销然后用户B来了并登录(他得到了2)但是然后他在用户A之前退出并且他得到1用于外出并且用户A得到2用于外出。所以现在用户和我当前的查询我将无法计算时间戳。
SQL = "SELECT CONCAT(u.lastname, ', ', u.firstname) AS Name, g.group_name AS Class, " _
& "DATE_FORMAT(i.timestamp_in,'%b %d %Y - %r') AS TimeIn, DATE_FORMAT (o.timestamp_out,'%b %d %Y - %r') AS TimeOut " _
& "FROM event_in i, event_out o, user u, groups g " _
& "WHERE(i.user_bannerid = u.user_bannerid) " _
& "AND o.user_bannerid = u.user_bannerid " _
& "AND i.user_bannerid = o.user_bannerid " _
& "AND i.event_id = o.event_id " _
& "AND o.event_id = i.event_id " _
& "AND i.group_id = o.group_id " _
& "AND i.group_id = g.group_id " _
& "AND o.group_id = g.group_id "
如果你有任何关于如何让它变得简单的建议请告诉我,我只想计算他们登录的时间。
还有一个VB代码可以阻止用户登录,进入......如果他们登录,他们必须先退出才能再次登录。
答案 0 :(得分:0)
是不是那种需要将用户映射到事件的情况?
我建议用于事件和用户的表格
<强> tblEvents 强>:
然后用户的表就像
<强>向tblUsers 强>:
然后,您实际上可以将用户映射到事件并为每个用户分配事件。