table A(int aid,string aname)
table B(int bid,int cid,string bname)
table C(int cid,string cname)
table D(int did,int aid,int  bid)表A,B,C,D第一列都是主键求个sql语句
当did=XXX时
select出如下的行集
(did,aname,bname,cname)

解决方案 »

  1.   

    关系是什么样的?我说的是1对1,1对多关系,这样看上去好像用left/right/inner join 就可以
      

  2.   

    select d.did,a.aname,b.bname,c.cname from d
    inner join a on d.aid=a.aid
    inner join b on d.bid=b.bid
    inner join c on c.cid=b.cid
      

  3.   

    select D.bid,A.aname,T.bname,T.cname
     from A,D,
         (
            select B.bid,B.bname,C.cname
              from  B,C
            where B.cid=C.cid
         ) T
    where A.aid=D.aid
      and B.bid=D.bid
      

  4.   

    谢谢以上各位,再问两个问题
    1.是问一下scmail81
    (
    select B.bid,B.bname,C.cname
    from B,C
    where B.cid=C.cid
    ) T
    是什么意思?就是成一个名叫T的临时表吗,在SQLSERVER的联机文档中哪里能查得关于这个的内容?
    2.再问一个更复杂一点的table B(int bid,int cid)
    table C(int cid,int price)
    table D(int did,int bid,price)表B,C第一列都是主键求个sql语句
    当did=XXX时
    select出如下的行集
    (did,price) 并且是group by did的,并把price sum()起来,这个应该怎么编
      

  5.   

    select did,aname,bname,cname
    from D
    inner join A on D.aid=A.aid
    inner join 
    (
     select B.*,C.cname from B inner join C on B.cid=C.cid 
    )t
    on D.bid=t.bid
    =====================================
    select did,sum(D.price),sum(t.price)
    from D
    inner join
    (
    select B.*,C.price from B inner join C on B.cid=C.cid 
    )t on D.bid=T.bid
    where did=XXX
    group by did
    不知道要哪個price sum