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

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


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(+);