日期:2014-05-17  浏览次数:20666 次

这个关联该怎么取?
有两个表FranchiseJoin和Join
FJID和JID是外键关系

declare @FranchiseJoin table(ID int,FFID int,FJID int)
insert into @FranchiseJoin
select 1,1,1 union 
select 2,1,3 union 
select 3,2,1

declare @Join table(JID int,Name varchar(20))
insert into @Join
select 1,'a' union 
select 2,'b' union 
select 3,'c' union 
select 4,'d' union 
select 5,'e' union 
select 6,'f' union 
select 7,'g'  

最后想得到如下数据
当@FranchiseJoin FFID=1时

1 a 1 1 1
2 b NULL NULL NULL
3 c 2 1 3
4 d NULL NULL NULL
5 e NULL NULL NULL
6 f NULL NULL NULL
7 g NULL NULL NULL

当@FranchiseJoin FFID=2时

1 a 3 2 1
2 b NULL NULL NULL
3 c NULL NULL NULL
4 d NULL NULL NULL
5 e NULL NULL NULL
6 f NULL NULL NULL
7 g NULL NULL NULL


也就是Join要取得到全部数据,而FranchiseJoin只取FJID关于某个值的那些数据,其他用NULL显示。
不知道该怎么取?
------解决方案--------------------
  declare @FranchiseJoin table(ID int,FFID int,FJID int)
insert into @FranchiseJoin
select 1,1,1 union 
select 2,1,3 union 
select 3,2,1
 
declare @Join table(JID int,Name varchar(20))
insert into @Join
select 1,'a' union 
select 2,'b' union 
select 3,'c' union 
select 4,'d' union 
select 5,'e' union 
select 6,'f' union 
select 7,'g'  

select *
from @Join as a  left join @FranchiseJoin as b  on a.JID=b.FJID
where FFID=1 or b.FJID is null