关于外表关联查询语句的问题?
现在有两张表,其中有一个字段是相同的。存在这样一个问题,从这两张表中取数据,其中A表中的这个字段的值在B表中,也许会找不到。但又想保证这两张表相关联后,A表有多少条记录,查询后也有相同的记录。该如何解决?
例:A表中有id,name,phone三个字段.在B表中有system,gzdm,phone,azdz四个字段。
A表的数据如下:(1,yifei,5215553)、(2,cctv,4214243)、(3,cdqy,4324232)
B表的数据如下:(01,20,5215553,长沙)、(02,21,4214243,娄底)、(03,22,85739323,广东)、(04,23,6738383,海南)
现在我希望得到这样的数据:id,name,phone,system,gzdm 以A表为主表,即要得到A表中所有的记录.例:(1,yifei,5215553,01,0)、(2,cctv,4214243,01,20)、(3,cdqy,4324232,0,0)
即如果phone字段在两张表中不匹配,则在B表中的字段用默认值。
问题点数:100、回复次数:5Top
1 楼lmby(鹿门布衣)回复于 2002-04-29 20:35:39 得分 0
select A.id, A.name, B.phone, B.system, B.gzdm
from A, B
where A.phone (+) = B.phone;
这是for oracle的。如果是sql server,把(+)换成*。Top
2 楼lmby(鹿门布衣)回复于 2002-04-29 22:10:00 得分 80
不好意思,写反了~~
select A.id, A.name, B.phone, NVL(B.system,'0') system, nvl(B.gzdm,'0') gzdm
from A, B
where A.phone = B.phone(+);
这是for oracle的。如果是sql server,把(+)换成*。
Top
3 楼andyzq(小强)回复于 2002-04-29 23:24:27 得分 0
用程序来处理,作两次嵌套循环,就可以把数据全部历遍!Top
4 楼jlandzpa(jlandzpa)回复于 2002-04-29 23:33:54 得分 0
同意lmby(鹿门布衣) 。Top
5 楼china_hfz(江夏)回复于 2002-04-30 00:08:27 得分 20
select A.id, A.name, B.phone, NVL(B.system,'0') system, nvl(B.gzdm,'0') gzdm
from A right outer jion b on a.phone= B.phone
Top




