none
多欄位 JOIN同一TABLE的欄位 問題請教 RRS feed

  • 問題


  •   您好:
      想請問 若有一個TABLE B01,其 有多個欄位SPEC1,SPEC2 要去 連結 另一個TBALE B01_SP的SPEC欄位,以取得SPEC_NAME
      除了 1.分別JOIN,來取得SPEC_NAME
           2.每個欄位,用子查詢來取的SPEC_NAME
      是否還有 其他方法,只join 一次B01_SP就好嗎?
      謝謝

      create table B01 (
      SN varchar(5),
      name varchar(8),
      spec1 varchar(3),
      spec2 varchar(3)
      )
    
      insert into B01 values('00001','1號物品','001','010');
      insert into B01 values('00002','2號物品','002','020');
      insert into B01 values('00003','3號物品','003','300');
      insert into B01 values('00004','4號物品','004','400');
    
      create table B01_SP(
      spec varchar(3),
      spec_name varchar(10)
      )
     
      insert into B01_SP values('001','規格001');
      insert into B01_SP values('002','規格002');
      insert into B01_SP values('003','規格003');
      insert into B01_SP values('004','規格004');
      insert into B01_SP values('010','代碼010');
      insert into B01_SP values('020','代碼020');
      insert into B01_SP values('300','代碼300');
      insert into B01_SP values('400','代碼400');
    
      select B01.SN,B01.name
      ,B01.spec1,sp1.spec_name
      ,B01.spec2,sp2.spec_name
      from B01  left join  B01_SP sp1
      on B01.spec1=sp1.spec
                left join  B01_SP sp2
      on B01.spec2=sp2.spec
    
    
      select B01.SN,B01.name
      ,B01.spec1,(select spec_name from B01_SP where spec=B01.spec1 )
      ,B01.spec2,(select spec_name from B01_SP where spec=B01.spec2 )
      from B01  


    2014年7月21日 上午 01:25

解答

所有回覆