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

两表合成问题
有两表:
TB1
code name
BS003 钟小姐
BS005 林先生
BS008 黄先生

TB2
code qu1 qu2
BS003 1.0 12.0
BS005 2.0 22.0

现想把两表合成得到如下表:
code name qu1 qu2
BS003 钟小姐 1.0 12.0
BS005 林先生 2.0 22.0
BS008 黄先生

我用select a.code,a.name,b.qu1,b.qu2 from tb1 a,tb2 b where a.code=b.code结果为空!
用select a.code,a.name,b.qu1,b.qu2 from tb1 a full join tb2 b on a.code=b.code结果为:
code name qu1 qu2
BS003 钟小姐  
BS005 林先生
BS008 黄先生

用select a.code,a.name,b.qu1,b.qu2 from tb1 a full join tb2 b on a.code=b.code结果为:
code name qu1 qu2
BS003 钟小姐  
BS005 林先生
BS008 黄先生
NULL NULL 1.0 12.0
NULL NULL 2.0 22.0

请教如何写?

------解决方案--------------------
SQL code

select a.code,a.name,isnull(b.qu1,'') qu1,isnull(b.qu2,'') qu2 from TB1 a
left join TB2 b
on a.code=b.code

------解决方案--------------------
select *,b.qu1,b.qu2 from tb1 a left join tb2 b on a.code = b.code
------解决方案--------------------
SQL code
select a.code,a.name,b.qu1,b.qu2 
from tb1 a full join--此处full join全连接换成左连接left join 
tb2 b on a.code=b.code

------解决方案--------------------
SQL code
select a.code,a.name,b.qu1,b.qu2 
from tb1 a full join--此处full join全连接换成左连接left join 
tb2 b on a.code=b.code

------解决方案--------------------
事实上,这样的情况是因为tb1中的code不等于tb2中的code。
可能是空格,可能是字段类型。这样看数据库的规则设置了。