A表(主表)   
  UserID   NAME 
  001      小白   
  002      小明  
  B表   
  UserID    XM  XJE  
  001       衣  100 
  001       帽  50
  001       靴  180
  002       衣  200
  002       靴  300
  C表   
  UserID   HJ   HJE   
   001     小车  200  
   001     飞机  500  
   002     小车  200  
   002     飞机  500  
   002     飞机  400
  最后我想要的结果是:  
  UserID   NAME  XM  XJE   HJ   HJE   
  001      小白  衣  100  小车  200  
  001      小白  帽  100  飞机  500  
  001      小白  靴  100  NULL  NULL
  002      小明  衣  200  小车  200  
  002      小明  靴  300  飞机  500  
  002      小明  NULL NULL飞机  400
请问SQL 怎么写?

解决方案 »

  1.   

    select a.UserID ,a.NAME,b.xm,b.xje,c.hj,c.hje from a left join b on a.userid=b.userid
     left join c on a.userid=c.userid   
      

  2.   

    这个可以吗,我试了,不行的,我考虑full join也不可以.
      

  3.   

    USERID NAME XM XJE HJ HJE
    001 小白 衣 100 小车 200
    001 小白 衣 100 飞机 500
    001 小白 帽 50 小车 200
    001 小白 帽 50 飞机 500
    001 小白 靴 100 小车 200
    001 小白 靴 100 飞机 500
    002 小明 衣 200 小车 200
    002 小明 衣 200 飞机 500
    002 小明 衣 200 飞机 400
    002 小明 靴 300 小车 200
    002 小明 靴 300 飞机 500
    002 小明 靴 300 飞机 400
    照楼上的写法,只能得到上面的结果呀
      

  4.   

    目前只能查询出这样的结果...>_<
      

  5.   

    樓主要把B表和C表增加一個欄位sort 對相同的userid排序A表(主表)  
      UserID  NAME 
      001      小白  
      002      小明  
      B表  
      UserID sort   XM  XJE  
      001    1     衣  100 
      001    2     帽  50 
      001    3     靴  180 
      002    1     衣  200 
      002    2     靴  300 
      C表  
      UserID sort HJ  HJE  
      001    1   小车  200  
      001    2   飞机  500  
      002    1   小车  200  
      002    2   飞机  500  
      002    3   飞机  400 
    sql語句: SELECT userid,name,xm,xje,hj,hje FROM A 
    FULL JOIN (SELECT b.userid buserid,xm,xje,c.userid cuserid,hj,hje FROM  B  
    FULL JOIN C ON userid=userid AND b.sort=c.sort) AS T
    ON (userid=buserid OR userid=cuserid)
     
    就可以得到你想要的结果:  
      UserID  NAME  XM  XJE  HJ  HJE  
      001      小白  衣  100  小车  200  
      001      小白  帽  100  飞机  500  
      001      小白  靴  100  NULL  NULL 
      002      小明  衣  200  小车  200  
      002      小明  靴  300  飞机  500  
      002      小明  NULL NULL飞机  400