随笔 - 3  文章 - 1  评论 - 11 
  2008年7月12日

来源:赛迪网    作者:Alizze

关联在Oracle数据查询时会经常用到,灵活的应用关联可以解决很多实际应用的问题.下面给出一些示例:

建表

create table ab
(
ab_id number(5),
ab_name varchar2(30)
);

create table bb
(
bb_id number(5),
bb_name varchar2(30)
);

插入数据

insert into ab(ab_id,ab_name) values(1,'1ab_name');
insert into ab(ab_id,ab_name) values(2,'2ab_name');
insert into ab(ab_id,ab_name) values(3,'3ab_name');

insert into bb(bb_id,bb_name) values(1,'1bb_name');
insert into bb(bb_id,bb_name) values(2,'2bb_name');
insert into bb(bb_id,bb_name) values(4,'4bb_name');
insert into bb(bb_id,bb_name) values(6,'6bb_name');

等值关联(全关联)

select a.ab_id,a.ab_name,b.bb_name from ab a,
bb b
where a.ab_id=b.bb_id;

返回结果

AB_ID AB_NAME BB_NAME
1 1ab_name 1bb_name
2 2ab_name 2bb_name

返回两个表中所有能匹配的记录,不能匹配的记录不返回。

左关联

select ab_id,ab_name, bb_name 
from ab a left join bb b
on a.ab_id=b.bb_id;

select ab_id,ab_name, bb_name
from ab a , bb b
where a.ab_id=b.bb_id(+);

返回结果

AB_ID AB_NAME BB_NAME
1 1ab_name 1bb_name
2 2ab_name 2bb_name
3 3ab_name

返回左边表的左右记录,在右边表中没有对应记录的右表字段显示为空。

右关联

select ab_id,ab_name, bb_name 
from ab a right join bb b
on a.ab_id=b.bb_id;

select ab_id,ab_name, bb_name
from ab a , bb b
where a.ab_id(+)=b.bb_id;

返回结果:

AB_ID AB_NAME BB_NAME
1 1ab_name 1bb_name
2 2ab_name 2bb_name
4bb_name
6bb_name

返回右边表中所有的记录,在右边表不能匹配的记录行上,左边表对应的字段显示为空。

完全外关联

select ab_id,ab_name, bb_name 
from ab a full join bb b
on a.ab_id=b.bb_id;

返回结果

AB_ID AB_NAME BB_NAME
1 1ab_name 1bb_name
2 2ab_name 2bb_name
3 3ab_name
6bb_name
4bb_name

返回两个表所有的结果,如果在关联条件上没有对应的记录,那么将在该列上显示为空。

全关联返回的结果集范围最小。完全外关联返回的结果范围最大,是否左关联和右关联并集;全关联是左关联和右关联的交集。

posted @ 2008-07-12 10:53 Wuya.net 阅读(37) | 评论 (0)编辑
  2008年5月16日

    
     上午写代码的时候遇到个问题,用DataTable.Select("筛选条件")筛选数据,然后付给另一个DataTable。结果运行时出现错误 。错误信息如下:DataBinding:“System.Data.DataRowView”不包含名为“CityName”的属性。

 

出错代码

遇到这个问题后。第一反应是字段名写错了。可检查后发现并没有写错。又检查了其他地方,也没有发现错误所在。于是百度一下。结果百度也无能为力,我只好自己研究。
     设了N个断点。最后发现筛选后得到的是DataRow数组。其并不包含原来DataTable的架构信息。知道了错误所在后。在testDisCity中再次构建一个和getCityVData中架构一样的DataTable。结果运行通过。
    小弟是新手不知道发这样的贴是不是浪费感情。见丑了。另外那位大侠要是还有好点的解决办法小弟不吝赐教。
posted @ 2008-05-16 13:28 Wuya.net 阅读(229) | 评论 (5)编辑
  2008年5月8日
     摘要:   阅读全文
posted @ 2008-05-08 10:22 Wuya.net 阅读(225) | 评论 (2)编辑
  2008年5月6日

在园子里潜水N久,终于滴..有了自己的一亩三分地。所以特发此贴,以表纪念。
在此感谢dudu 感谢博客园的工作人员。
感谢那些曾经或是正在对程序开发做出贡献的人们。
                                                  Over

posted @ 2008-05-06 15:33 Wuya.net 阅读(68) | 评论 (4)编辑