日期:2014-05-19  浏览次数:20441 次

多表链接查询中可以使用外链接吗?求SQL语句
--A表
PART_NO     PART_NAME     J_NO      
--------   ----------   -------
TEST1         NAME1               MJ1
TEST2         NAME2               MJ2
TEST3         NAME3               NULL
MJ1             J001                 NULL
MJ2             J002                 NULL

--B表
mk_no         part_no                                    
--------   ----------
M01           TEST1                    
M02           TEST2                  
M03           TEST3                      
         
--想到的结果如下(仅限用SELECT)

B.mk_no         A.PART_NO     A.PART_NAME     A.J_NO       PART_NAME
--------       --------       ----------       -------         ----------
M01                 TEST1             NAME1                   MJ1               J001
M02                 TEST2             NAME2                   MJ2               J002
M03                 TEST3             NAME3                   NULL             NULL

直接使用SELECT   加外链接可否实现?该如何实现?


------解决方案--------------------
declare @A table(PART_NO varchar(20),PART_NAME varchar(20),J_NO varchar(20))
insert into @A
select 'TEST1 ', 'NAME1 ', 'MJ1 ' union all
select 'TEST2 ', 'NAME2 ', 'MJ2 ' union all
select 'TEST3 ', 'NAME3 ',null union all
select 'MJ1 ', 'J001 ',null union all
select 'MJ2 ', 'J002 ',null

declare @B table(mk_no varchar(20),part_no varchar(20))
insert into @B
select 'M01 ', 'TEST1 ' union all
select 'M02 ', 'TEST2 ' union all
select 'M03 ', 'TEST3 '

select b2.*,a2.PART_NAME from @A a2 right join (
select b.*,a.PART_NAME,a.J_NO from @A a right join @B b on a.PART_NO=b.part_no
) b2 on a2.PART_NO=b2.J_NO

/*result
mk_no part_no PART_NAME J_NO PART_NAME
-------------------- -------------------- -------------------- -------------------- --------------------
M01 TEST1 NAME1 MJ1 J001
M02 TEST2 NAME2 MJ2