表A   
 cid       city
  1         a1 
  2         a2
  5         a5
  6         a6
  8         a8
    
表B   
 cid       name 
  3         b3 
  5         b5 
  7         b7
  9         b9
   
表C   
 cid       photo
  1         c1
  4         c4
  5         c5
  7         c7
  8         c8请教如何把表A 表B 表D合成
表D   
 cid  name  city  photo  
  1    a1           c1
  2    a2           
  3          b3
  4                 c4
  5    a5    b5     c5
  6    a6
  7          b7     c7
  8    a8           c8
  9          b9
-----------------------------------

解决方案 »

  1.   

    select t3.*,c.photo from 
    (select t2.* ,b.name from 
    (select t1.*,a.city from 
    (select la.cid from lht_a la
    union
    select lb.cid from lht_b lb
    union
    select lc.cid from lht_c lc) t1,lht_a a 
    where t1.cid=a.cid(+)) t2,lht_b b 
    where t2.cid=b.cid(+))t3,lht_c c
    where t3.cid=c.cid(+);
      

  2.   


    SELECT * FROM (SELECT A.CID,B.NAME,A.CITY,C.PHOTO FROM A,B,C WHERE A.CID=B.CID(+)  AND A.CID=C.CID(+)
                   UNION 
                   SELECT B.CID,B.NAME,A.CITY,C.PHOTO FROM A,B,C WHERE C.CID(+)=B.CID AND B.CID=A.CID(+) 
                   UNION 
                   SELECT C.CID,B.NAME,A.CITY,C.PHOTO FROM A,B,C WHERE C.CID=A.CID(+) AND B.CID(+)=C.CID )
    ORDER BY CID  
      

  3.   

    多谢楼上,结果正确。
    请教是否可以指点下,t3.cid=c.cid(+) 这表示什么意思?
      

  4.   

    如果三张表不是通过一个字段来关联,而是需要通过两个字段来关联。怎么写呢?如:
    表A    
     cid   did    city 
      1     d1    a1  
      2     d1    a2 
      5     d2    a5 
      6     d6    a6 
      8     d8    a8 
         
    表B    
     cid   did    name  
      3     d3    b3  
      5     d1    b5  
      7     d7    b7 
      8     d8    b8
      9     d9    b9 
        
    表C    
     cid   did    photo 
      1     d2    c1 
      4     d4    c4 
      5     d1    c5 
      7     d1    c7 
      8     d8    c8A B C 合并为D:
    表D:
     cid did  name  city  photo   
      1   d1         a1
      1   d2               c1
      2   d1         a2
      3   d3   b3
      4   d4               c4
      5   d1   b5          c5
      5   d2         a5
      6   d6         a6
      7   d1               c7
      7   d7   b7
      8   d8   b8    c8    a8
      9   d9   b9
    ----------------------------------
    请问这样又该如何写?
      

  5.   

    select tta.cid,tta.did,ttb.ttcity,ttc.name,ttd.photo from(
    select ta.cid,ta.did from A ta 
    union 
    select tb.cid,tb.did from B tb 
    union 
    select tc.cid,tc.did from C tc
    ) tta 
    left join A ttb on tta.cid=ttb.cid
    left join B ttc on tta.cid=ttc.cid
    left join C ttd on tta.cid=ttd.cid
    order by tta.cid,tta.did
      

  6.   

    上面忘了个条件:select tta.cid,tta.did,ttb.city,ttc.name,ttd.photo from(
    select ta.cid,ta.did from A ta 
    union 
    select tb.cid,tb.did from B tb 
    union 
    select tc.cid,tc.did from C tc
    ) tta 
    left join A ttb on tta.cid=ttb.cid and tta.did=ttb.did
    left join B ttc on tta.cid=ttc.cid and tta.did=ttc.did
    left join C ttd on tta.cid=ttd.cid and tta.did=ttd.did
    order by tta.cid,tta.did