1. 程式人生 > >Sql語句用left join 解決多表關聯問題(關聯套關聯,例子和原始碼)

Sql語句用left join 解決多表關聯問題(關聯套關聯,例子和原始碼)

帖子是原創是,但是在csdn中高手幫我給解決了,其實就是別名,給自己上了一堂別名的課,所謂別人是高手,其實就是自己是菜鳥吧!

表1:------------------------------ 【人事表】
     表名:【Man】
     欄位: Man_Id,Man_Name,Zw_Id
              1     貂蟬       2
              2     曹操       1

表2:------------------------------ 【職務表】
     表名:【Zw】
     欄位: Zw_Id,Zw_Name
              1     校長 


              2     班主任

表3:------------------------------ 【工資表】
     表名:【GZ】
     欄位: Man_Id,Money,Sex_Id
              1    2500     1
              2    4000     2

表3:------------------------------ 【性別表】
     表名:【xb】
     欄位: Sex_Id,Sex_Name
              1    女
              2    男

需要的------------------------------- 【查詢結果】:


     Man_Id,Man_Name,sex_name,Zw_Name,Money
       1      貂蟬     女      班主任   2500
       2      曹操     男       校長    4000


方法一(推薦):

select a.man_id,man_name,d.sex_name,zw_name,c.money
 from man as a 
      left join zw as b on a.zw_id=b.zw_id 
      left join gz as c on a.man_id=c.man_id 
      left join xb as d on c.sex_id=d.sex_id

方法二:
select Man_Id,Man_Name,sex_name,Zw_Name,Money from
(
       select  a.Man_Id,Man_Name,b.Zw_Id,Zw_Name,Money,Sex_Id  from  [Man] a 
               left join  [Zw] b on a.Zw_Id=b.Zw_Id
               left join  [Gz] c on a.Man_Id=c.Man_Id
)t
left join xb m on m.Sex_Id=t.Sex_Id

方法三:

select man.man_id,man.man_name,xb.sex_name,zw_name,gz.money
 from man 
      left join zw on man.zw_id=zw.zw_id 
      left join gz on man.man_id=gz.man_id 
      left join xb on gz.sex_id=xb.sex_id