日志表 log:
id   desc    userid
1    查询      1
2    删除      2用户表  user:
id     username
1       aaa
删除用户表   del_user:
id   userid   username
1       2       bbbb表结构如上,请写一条sql语句,查询日志id,日志desc,用户名username。 

解决方案 »

  1.   

    select l.id,l.desc,u.username from log l inner join user u on l.userid=u.id
      

  2.   


    要查询所有的记录   需要关联 del_user表  
      

  3.   

    把三个表的关联字段列出来
    你的第二个表只有id,没有userid,和第一个表怎么关联?和第三个表又怎么关联?
      

  4.   


    这三张表中的id都是主键   log表的userid字段对应第二张表的id字段,对应第三张表的userid字段,为了简便起见,我把表结构修改一下:
    日志表 log:
    id desc userid
    1 查询 1
    2 删除 2用户表 user:
    userid username
    1 aaa
    删除用户表 del_user:
    userid username
    2  bbbb请写一条sql语句,查询日志id,日志desc,用户名username。
    这应该比较好理解
      

  5.   

    select log.id,
           log.desc,
           user.username,
           del_user.username
    from user,del_user,log
    where log.userid=user.userid and log.userid=del_user.userid
      

  6.   

    表1中的一条数据会不会在表2和表3中都有记录?如果都有的话 按照楼上的sql查就行
    如果表2和表3中的数据是互斥的 那么可以这样
    select log.id, log.desc, nvl(user.username, del_user.username) as username
      from log
      left join user on (log.userid= user.userid)
      left join del_user on (del_user.userid= log.userid)
      

  7.   

     
    对2、3表中的记录是互斥的   sql语句写的很好   
    但是nvl(user.username, del_user.username)是只能用到oracle数据库  我现在用的数据库是mysql
    能不能用标准的sql处理或者mysql有相似功能的函数吗 
      

  8.   

    select log.id, log.desc, IFNULL(user.username, del_user.username) as username
      from logs log
      left join user on (log.userid= user.userid)
      left join del_user on (del_user.userid= log.userid);上面是mysql中的用法,仍然感谢7楼