首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

请给看看,错哪了?

2012-10-17 
请给看看,哪里错了?在线等.....很久没操作数据库了,建了一个视图,记录丢失,不解select em_name,dep_name,w

请给看看,哪里错了?在线等.....
很久没操作数据库了,建了一个视图,记录丢失,不解


select em_name,dep_name,wa_base from em,dep,wa where em.em_depnum=dep.dep_num and em.em_num =wa.wa_num;
说明如下:
em_name是em中的列
dep_name 是dep中的列
wa_base 是wa中的列

em和dep 有键 em_depnum=dep_num 
em和wa有键 em_num=wa_num
建成视图后,在视图中少记录
假设em有100条,wa有100条,dep有20条
结果仅仅有85条
希望结果是以em为中心,100条记录


[解决办法]
想以em为中心 就用左连接啊
你这样 如果数据不能一一对应 肯定会少于100条的
左连接用法
select em_name,dep_name,wa_base from em,dep,wa where em.em_depnum=dep.dep_num(+) and em.em_num =wa.wa_num(+);

[解决办法]

SQL code
--你使用的是等值连接,不符合的当然不会出现了--使用左连接以em为准select em_name, dep_name, wa_base  from em, dep, wa where em.em_depnum = dep.dep_num(+)   and em.em_num = wa.wa_num(+); 

热点排行