有两个表,
Table1: LoginoutInfo  --记录系统管理员进出时的时间,当然,用“结束任务”
的方法关闭程序是记录不到的,会只有Login,而没有Logout。
LoginoutInfo(user(char(20)),LogTime(DateTime),LogStatus(char(10)))
记录是这样的:
admin  2006-12-15 10:25:36   login
admin  2006-12-15 10:55:36   logout
admin  2006-12-15 10:59:10   login  --这里被结束任务,所以没有logout
user1  2006-12-15 11:09:20   login
user1  2006-12-15 11:15:11   logout
......Table2: EventLogInfo
--记录管理员在系统里所有的操作
EventLogInfo(EvtTime(DateTime),EvtContent(nvarchar(100)))
记录是这样的:
2006-12-12 10:26:07    Delete a record
2006-12-12 10:26:12    add a record
2006-12-12 11:01:07    backup database
2006-12-12 11:10:54    Delete a user
....我想得到这样的结果(其实就是把这些操作是谁做的加在描述后面):
2006-12-12 10:26:07    Delete a record By admin
2006-12-12 10:26:12    add a record By admin
2006-12-12 11:01:07    backup database By admin
2006-12-12 11:10:54    Delete a user By user1
....请问,这样的语句如何写?
多谢了,很急,

解决方案 »

  1.   

    delphi社区人气真的不行了!!
      

  2.   

    建议将表EventLogInfo增加一个用户字段来记录登陆的用户。
    insert into EventLogInfo values(.....Sql语句一样的写
    Parambyname('EvtTime').value := now;
    parambyname('EvtContent').value := '动作‘+’用户‘;
      

  3.   

    create table #LoginoutInfo(logNo char(20),LogTime DateTime,LogStatus char(10))
    insert into #LoginoutInfo
    select 'admin','2006-12-15 10:25:36','login'
    union all select 'admin','2006-12-15 10:55:36','logout'
    union all select 'admin','2006-12-15 10:59:10','login' 
    union all select 'user1','2006-12-15 11:09:20','login'
    union all select 'user1','2006-12-15 11:15:11','logout'create table #event(EvtTime DateTime,EvtContent nvarchar(100))insert into #event
    select '2006-12-12 10:26:07', 'Delete a record'
    union all select '2006-12-12 10:26:12', 'add a record'
    union all select '2006-12-12 11:01:07', 'backup database'
    union all select '2006-12-12 11:10:54', 'Delete a user'
    表帮大家建好了,
      

  4.   

    liaosummer我明白您的意思,您的意思是说在记录eventlog的时候直接把操作人带上?
    是的,
    但是现在时间不允许了,
    客户赶着要货,所以打算先用语句搞定,然后再改这里!!
    特别多谢各位
      

  5.   

    不知道楼主的意思是不是说,要找出EventLogInfo.EvtTime在LoginoutInfo.LogTime之内的记录还是怎样.这两个应该要有一定的关联的吧??
      

  6.   

    你都记下了是谁登陆的,记录动作的时候直接+用户名不就完了?
    设个全局变量UserName
      

  7.   

    select a.Evttime,a.Evtcontent,b.user from table2 a  left  join table1 b  on b.logtime < a.evtime order by  b.logtime desc  取小于当前操作时间中的最晚时间处所登陆的管理员用户
    不过,上面的几个大侠都说了最好在table2中添加 User记录
    注:随手写的没测试!
      

  8.   

    select top 1 a.Evttime,a.Evtcontent,b.user from table2 a  left  join table1 b  on b.logtime < a.evtime order by  b.logtime desc   
    忘了top1  [sql server]