mysql的唯一ID

时间:2011-11-11 03:43:41

标签: mysql vb.net

我正在使用mysql和visual basic进行登录/退出程序,需要一点帮助。 我有两个表event_inevent_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代码可以阻止用户登录,进入......如果他们登录,他们必须先退出才能再次登录。

1 个答案:

答案 0 :(得分:0)

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

我建议用于事件和用户的表格

<强> tblEvents

  • tblUsers_UserId INT
  • EventId INT

然后用户的表就像

<强>向tblUsers

  • UserId INT PK AI
  • UserDesc VARCHAR()

然后,您实际上可以将用户映射到事件并为每个用户分配事件。