标签:
这几天的工作基本上没有了比较的新的技术点,就是反反复复的修改需求,修改Bug……当然,也是到了此刻,自己猜觉得在一个庞大的项目中,需求分析的重要性,以及需求说明书的重要性。我们在需求模糊、文档缺乏的条件下,反复修改功能已经成了家常便饭,今天领导说这个功能应该这样,我们就要立刻改到这样,第二天领导说又要原来的那样,我们只能再改回去了……有时候,我们也曾调侃自己是典型的面向领导开发……
今天没有什么比较新的技术点来总结了,自己回顾了一下,这几天的工作,发现在关联表中创建视图的时候对于连接不是特别熟悉,所以趁此机会再回顾一下了:
1、内联接(典型的联接运算,使用像= 或 <> 之类的比较运算符)。包括相等联接和自然联接。内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。
2、外联接。外联接可以是左向外联接、右向外联接或完整外部联接。
在FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:
1)LEFT JOIN或LEFT OUTER JOIN
左向外联接的结果集包括 LEFTOUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
2)RIGHT JOIN 或 RIGHT OUTER JOIN
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
3)FULL JOIN 或 FULL OUTER JOIN
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
3、交叉联接
交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。
FROM子句中的表或视图可通过内联接或完整外部联接按任意顺序指定;但是,用左或右向外联接指定表或视图时,表或视图的顺序很重要。有关使用左或右向外联接排列表的更多信息,请参见使用外联接。
以下是自己在防灾系统中中写的一个三个表的左连接实例,供参考:
<span style="font-size:24px;">create or replace view v_dp_b_limitratesegement as select s_id,s_linename,s_linecode,s_monitoringunitcode,s_monitoringpointcode,s_areacode,s_areaname,s_startkilometer,s_startmeter,s_endkilometer,s_endmeter,c_tagspeed,s_tagspeed,i_sortid,c_ableflag, s_basestationname,kilometer from ( select t1.s_id,t1.s_linename,t1.s_linecode,t1.s_monitoringunitcode,t1.s_monitoringpointcode,s_areacode,s_areaname,s_startkilometer,s_startmeter,s_endkilometer,s_endmeter,c_tagspeed,s_tagspeed,t1.i_sortid,t1.c_ableflag, t2.s_basestationname, ('K' || t3.i_km || '+' || t3.i_meter) kilometer from dp_b_processsegment t1 left join dp_b_basestationinfo t2 on t1.s_monitoringunitcode= t2.s_id left join dp_b_monitoringpointinfo t3 on t1.s_monitoringpointcode=t3.s_id ) t; </span>
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/u010375663/article/details/48110907