表A:uid(用户ID)  username(用户名)
表B:uid(用户ID)  nickname(昵称)
表C:username(用户名) touser (用户名) SELECT * FROM C ORDER BY id DESC ;
这个是可以查询出C表中的username和touser两个字段。都是用户名。
我想把用户名变成昵称,结合表A和表B怎么写这个联合查询 ?思路是:通过表C的username结合表A找到uid,然后结合表B查询出nickname 。
难点就是表C中有两个用户名,不知道怎么写 。

解决方案 »

  1.   

    select b.nickname,c.touser
    from (c inner join a on c.username=a.username)
     inner join b on a.uid=b.uid
     
    -- or select b.nickname,c.touser
    from c,a,b
    where c.username=a.username and a.uid=b.uid
    == 思想重于技巧 ==
      

  2.   

     本来查询出来的是username和touser
    我要把这两个用户名转换成对应的昵称 。。   
      

  3.   

    1.楼的SQL语句不可以吗?
    == 思想重于技巧 ==
      

  4.   

    select b.nickname,c.touser
    from c,a,b
    where c.username=a.username and a.uid=b.uid--------为什么要select b.nickname,c.touser
    select b.nickname不行吗?
      

  5.   

    不太明白楼主的意思.
    你的c表没有id,怎么可以执行到这个SELECT   *   FROM   C   ORDER   BY   id   DESC;?
    什么难点是两个用户名?既然本来的属性名不同,就算它们代表的意义一样,数据库都不会识别不了啊?
      

  6.   

    select   b.nickname,c.touser 
    from   c,a,b 
    where   c.username=a.username   and   a.uid=b.uid --------为什么要select   b.nickname,c.touser 
    select   b.nickname不行吗?-----------------你只select出nickname有什么意义呢?干脆直接select nickname from b就行了。