有3个表:Ta,Tb,Tc
想根据表Tc.username来确定Ta和Tb中的记录,
表Ta中有字段Ta.username,Ta.age
表Tb中也有字段Tb.username,Tb.sex我现在想取,Tc中username='我' 的Ta.age, 和 Tb.sex
如:select Tc.id,
 (SELECT age FROM Ta WHERE username='我' ) AS age,
 (SELECT sex FROM Tb WHERE username='我') AS sex
from Tc
where Tc.username='我'
这SQL 语句要怎么写啊?注:Tc.id 必选

解决方案 »

  1.   


    --try
    select C.id, A.age, B.sex 
    from Tc C 
    left join Ta A on C.username=A.username
    left join Tb B on C.username=B.username
    where C.username='我'
      

  2.   

    好象表述有误,不好意思。
    应该是这样:
    ----------
    有2个表
    Tb,Tc
    -----------
    字段Tb: Tb.b1,Tb.b2,Tb.b3
    Tc: Tc.c1,Tc.c2,Tc.c3
    ---------
    要 
    select Tc.c1, (这里根据Tc.c2=Tb.b2 取出Tb1和Tb3)
    from Tc
    where Tc.c3='我'然后结果的记录集里是
    c1,b2,b3 的值
      

  3.   

    --try
    select C.c1, B.b1, B.b3
    from Tc C join Tb B on C.c2=B.b2
    where  C.c3= '我' 
      

  4.   

    晕了。没发表述了。再次。有3个表
    Ta,Tb,TcTa: Ta.a1,Ta.a2,Ta.a3
    Tb: Tb.b1,Tb.b2,Tb.b3
    Tc: Tc.c2,Tc.c2,Tc.c3其中 Ta.a1是Tc.c2的外键,Tc.c3保存的是Tb的主键值。想选择 Tc.c2="某一确定值" 的所有Tc的记录,这时记录集:
    c1,c2,c3
     .
     .
     .
    想再根据此记录集里的每一个c2的值去取Ta.a2;
    根据c3的值去取Tb.b2
    即:c1,c2=Ta.a2,c3=Tb.b2
        .
        .
        .最后获得的记录集里的字段是:
    c1,a2,b2
      

  5.   

    麻烦点的如下:select ta.age,tb.sex 
    from ta,tb
    where ta.username = tb.username
    and ta.username in (select username from tc where username = '我')简单点的如下select ta.age,tb.sex 
    from ta,tb 
    where ta.username = tb.username and ta.username = '我'
      

  6.   

    我现在想取,Tc中username= '我 ' 的Ta.age, 和 Tb.sex 
    如: select Tc.id, 
     (SELECT age FROM Ta WHERE username= '我 ' ) AS age, 
     (SELECT sex FROM Tb WHERE username= '我 ') AS sex 
    from Tc 
    where Tc.username= '我 ' 
    这SQL 语句要怎么写啊? ---------------select t1.id,t2.age,t3.sex
    from tc t1 left join ta t2 on t1.关键字=t2.关键字
                 left join tb t3 on t2.关键字=t3.关键字
    where t1.username='我'
      

  7.   

    谢谢大家,不过我好象都说不清楚,现在我又乱弄了一个,竟然可以成功运行,并且得出了正确(想要)的结果,我发出来大家帮忙看看,也许就能理解我想要说什么,想要得到什么样的语句了,呵呵。这肯定不是最忧的,大家再帮帮忙帮我优化一下或者用另外更好的方法来实现我想要的这个结果。谢谢。我想马上就给分结帖了!!!
    SELECT TOP 100 PERCENT oid, ztid,          
      (SELECT mxtype FROM dbo.Tzt WHERE (tZtID = dbo.Tsc.ztid)) AS mxtype, 
      (SELECT otitle FROM dbo.Tzt WHERE (tZtID = dbo.Tsc.ztid)) AS otitle, 
      (SELECT Mend FROM dbo.Tzt WHERE (tZtID = dbo.Tsc.ztid)) AS Mend, 
      (SELECT dtime FROM dbo.Tzt WHERE (tZtID = dbo.Tsc.ztid)) AS dtime, 
      (SELECT userNC FROM dbo.Tuser WHERE (
    tUserID = (SELECT dbo.Tzt.userid FROM dbo.Tzt WHERE (tZtID = dbo.Tsc.ztid)))
      ) AS userNC
    FROM dbo.Tsc
    WHERE (userid = 2)
    ORDER BY oid
      

  8.   

    SELECT TOP 100 PERCENT oid, ztid,a. mxtype, a.otitle,  a. Mend, a. dtime, b.usernc
    FROM dbo.Tsc,tzt a,tuser b
    WHERE userid = 2 and tsc.ztid=a.ztid and a.userid=b.tuserid
    ORDER BY oid
      

  9.   

    不错,不错。给分结帖,接好啦!最后改成这样
    SELECT TOP 100 PERCENT dbo.Tsc.oid, dbo.Tsc.ztid, dbo.Tzt.mxtype, dbo.Tzt.otitle, dbo.Tzt.Mend, dbo.Tzt.dtime, dbo.Tuser.tUserID, dbo.Tuser.userNC
    FROM dbo.Tsc, dbo.Tzt, dbo.Tuser
    WHERE (dbo.Tsc.userid = 2) AND (dbo.Tzt.tZtID = dbo.Tsc.ztid) AND (dbo.Tuser.tUserID = dbo.Tzt.userid)
    ORDER BY oid
      

  10.   


    select top 100 percent a.oid,a.ztid,b.mxtype,b.otitle,b.mend,b.dtime,c.usernc from tsc a inner join tzt b on a.ztid=b.tztid
    inner join tuser c on c.tuserid=(SELECT userid FROM Tzt WHERE tztid=a.ztid)
    where a.userid=2
    order by a.oid--好像这样也可以
    select top 100 percent a.oid,a.ztid,b.mxtype,b.otitle,b.mend,b.dtime,c.usernc from tsc a inner join tzt b on a.ztid=b.tztid
    inner join tuser c on c.tuserid=b.userid
    where a.userid=2
    order by a.oid