2011-11-11 55 views
0

我使用mysql和visual basic进行登录/注销程序,需要一些帮助。 我有两个表event_inevent_out和每个表下我有event_id,它会自动为每一行生成一个数字(从1开始)。我想知道是否可以根据用户生成数字。 因此,假设用户A来登录,将1生成到event_id。然后用户B来登录。我也想为他生成1 ...因此,所有用户A的event_id都将是1,2,3 ...并且每个用户的输入和输出表的event_id也是相同的。mysql的唯一ID

有了这个,我就能减去event_out从的event_in每个用户的时间戳得到多久,他们是in。

我相信,如果我不单独生成的数字为每一个用户的话,假设用户A登录(在event_in表中为event_id生成了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 " 

如果你对我怎么可以把它简单的让我知道任何suggetion,我只是想能够计算出他们是如何长签署。

也就是有一个VB代码,将防止用户登录,进入,进入......如果他们登录,他们必须先登出才能再次登录。

回答

0

是不是那种需要将用户映射到事件的情况?

我建议的事件和用户这样的事情

tblEvents表:

  • tblUsers_UserId INT
  • EVENTID INT

然后表用户会像

向tblUsers

  • 用户ID INT PK AI
  • UserDesc VARCHAR()

然后你就可以用户实际映射到事件并指定事件为每一位用户。

+0

我的计算机科学家和天才们在哪里?有人想帮助我吗? :/ – user1012135