select a.*,b.*,c.* from #a a full join #b b on a.PlateNumber=b.PlateNumber and a.PeccancyTime=b.PeccancyTime full join #c c on a.PlateNumber=c.PlateNumber and a.PeccancyTime=c.PeccancyTime
这样的话 a表 与b 表 就没法关联了。 求教 怎么改改 可以使 a b c 都关联上 sql full?join [解决办法] 你这个逻辑好矛盾啊,你最终想取得谁的数据? 按照你这个关联法,c表要同时查询到ab两表的字段的话,必然要ab两表是inner join的关系 如果是full join,c表也不能同时匹配a表有b表没有,且b表有a表没有的数据啊 [解决办法] 我也有类似楼主的问题,举个简化的例子: 有三个表:入库表、领料表、退料表。 每个表都有四个字段,ID(自增长的),日期,料号,数量。 需要的结果是一个月中的入出记录:料号、入库数量、领料数量、退料数量。 因为某个料可能这个月只有入库,或是只有领料,或是只有退料。所以需要将三个表进行full连接。 假设每个表每天只有一条记录的情况下,下面的SQL语句: select * from 入库表 a full join 领料表 b on a.日期=b.日期 and a.料号=b.料号 full join 退料表 c on a.日期=c.日期 and a.料号=c.料号 当有一天,入库表没有记录,而领料表与退料表都有记录,则会变成两条记录。 [解决办法]
SELECT aa.*,cc.* FROM (SELECT COALESCE(a.PlateNumber,b.PlateNumber) PlateNumber,COALESCE(a.PeccancyTime,b.PeccancyTime) PeccancyTime,... FROM #a a FULL JOIN #b b ON a.PlateNumber=b.PlateNumber AND a.PeccancyTime=b.PeccancyTime) aa FULL JOIN #c cc ON aa.PlateNumber=cc.PlateNumber AND aa.PeccancyTime=cc.PeccancyTime
[解决办法]
这样就可以了
select a.*,b.*,c.* from #a a full join #b b on a.PlateNumber=b.PlateNumber and a.PeccancyTime=b.PeccancyTime full join #c c on isnull(a.PlateNumber,b.PlateNumber)=c.PlateNumber and isnull(a.PeccancyTime,b.PeccancyTime)=c.PeccancyTime [解决办法]