我有2个表,
t1:(uid,username);t2:(uid,uidfrom,uidto)
   (三个字段全是id号);我现在要在浏览器把t2这个表显示出来,但是id号换成用户名。这种可以用一个select语句弄出来吗?我是新人,问题多,分又少,大家千万别嫌分少阿,谢谢,鞠躬。

解决方案 »

  1.   

    select * from t1 inner join t2 on t1.uid=t2.uid
      

  2.   

    select *
    from t2, t1 a,t1 b,t1 c
    where t2.uid=a.uid
    and t2.uidfrom=b.uid
    and t2.uidto=c.uid
      

  3.   


    sorry,我没有把我的2个表说清楚。t1:(uid,username)
       这里uid是主键;t2:(uid,uidfrom,uidto) 
      (三个字段全是id号)
       这里uid不是主键了,也就说可以重复,比如
          1,2,3
         1,2,4
         1,2,5
      (所有id号都会在t1表里出现)不知道我有没有说清楚。如果这样写的话,会有重复记录,虽然可以用distinct,但这只是不显示重复的记录,不代表没有重复记录,我之后还要做其他操作的。
      

  4.   

    对不起,我现在在重新说一下。
    我有2个表,
    t1:(uid,name)t1的数据:
         (1,name1),(2,name2),(3,name3),(4,name4),(5,name5)
      uid在这个表里是不可以重复的。t2:(uid,uidfrom,uidto)
       uid在这个表里是可以重复的
       
        t2的数据:
          (1,2,3),(1,2,4),(1,2,5),(2,1,4),(2,3,4)
        
         (t2里所有id号在t1里都有记录)
    现在我要找出表t2里uid=1的所有记录,并按如下形式显示出来       (name2,name3),(name2,name4),(name2,name5)不能用distinct,请问这个怎么写?谢谢  
      

  5.   

    select a.name,c.name from t1 a inner join t2 b on a.uidfrom=b.uid 
    inner join t1 c on b.uidfrom=c.uid where b.uid=1
      

  6.   

    考试啊?不能用 distinct ? select a.name,b.name
    from t1 a,t1 b
    where (a.uid,b.uid) in (select uidfrom,uidto from t2 where uid=1);
      

  7.   

    呵呵,因为如果用distinct只是不显示重复的记录,但实际上这些记录还是存在的,不方便我后面做其他处理。非常谢谢wwwwb和acmain,两个我都能用,虽然wwwwwb的表搭配错了,呵呵。谢谢。