2012-03-06 106 views
0

我试图从我的user_log表中获取第一个人(标记为user_log.userlog_log_type = 1)和最后一个人(log_type = 2)的所有日子。在用户中,我有user_id pk和user_name,并且在user_log中,我在第一个表中为user_id提供了userlog_user_id FK。MYSQL棘手的内部连接错误

现在我设法获得每天的第一个条目和每天的最后一个条目。但是,当我使用内部连接来获取我想要的表格(day,firstIn,lastOut)时,我得到一个错误,似乎无法找到我做错的地方:

如果任何人都可以帮助,我会非常感激。非常感谢!

回答

1

它看起来像你经历了很多得到一点......我会开始一个单一的查询,每天获得最小和最大的人,然后从那里。我希望在用户登录时戳指数...

select 
     LogInOut.LogActivity, 
     LogInOut.JustDay, 
     LogInOut.What_Time, 
     ULMain.UserLog_User_ID, 
     U1.user_name 
    from 
     (select 
       day(UL.UserLog_Timestamp) as JustDay, 
       max(UL.UserLog_Log_type) as LogActivity, 
       min(UL.userlog_timestamp) as What_Time 
      from 
       UserLog UL 
      where 
       UL.UserLog_Log_Type = 1 
      group by 
       day(UL.UserLog_Timestamp) 
     UNION 
     select 
       day(UL.UserLog_Timestamp) as JustDay, 
       max(UL.UserLog_Log_type) as LogActivity, 
       max(UL.userlog_timestamp) as What_Time 
      from 
       UserLog UL 
      where 
       UL.UserLog_Log_Type = 2 
      group by 
       day(UL.UserLog_Timestamp)) LogInOut 

     JOIN UserLog ULMain 
     on LogInOut.What_Time = ULMain.UserLog_Timestamp 
     AND LogInOut.LogActivity = ULMain.UsrLog_Log_Type 

     JOIN Users U1 
      on ULMain.UserLog_User_ID = U1.User_ID 
    order by 
    LogInOut.JustDay, 
    LogInOut.LogActivity 

会创造这样

LogActivity JustDay What_Time UserLog_User_ID user_name 
1   Mar 1 7:56am 123    Bill Board 
2   Mar 1 6:23pm 431    Eilean Dover 
1   Mar 2 7:02am 98    Crystal Clear 
2   Mar 2 6:47pm 221    Ben Dover 

现在,如果你想要这个卷起的单行(交叉表)所以一排显示的那一天,谁在第一,谁出最后,我想包改变顶部和类似

select 
     LogInOut.JustDay, 
     MIN(LogInOut.What_Time) as EarlyLogin, 
     MAX(IF(LogInOut.LogActivity = 1, U1.User_Name, ' ')) as EarlyUser, 
     MAX(LogInOut.What_Time) as LastLogOut 
     MAX(IF(LogInOut.LogActivity = 2, U1.User_Name, ' ')) as LastUser 
    from 
     (exact rest of from/join/order by clause) 
    group by 
     LogInOut.JustDay 


JustDay EarlyLogin EarlyUser  LastLogOut LastUser 
Mar 1 7:56am  Bill Board  6:23pm  Eilean Dover 
Mar 2 7:02am  Crystal Clear 6:47pm  Ben Dover 
+0

添加组正如我在编辑的问题说,我只能用这2桌。 +1虽然。 – Fofole 2012-03-06 13:17:38

+0

@Fofole,我只使用你提供的两个表......“别名”引用是内部SQL临时结果集,没有使用“其他”表。 – DRapp 2012-03-06 13:41:07