一定是新增记录不符合视图中表的连接条件,好好分析一下视图中各表是以什么条件连接的吧。追问我只上传了employee里的e_number,e_name,s_id,e_birthdate,e_workdate,e_idcard,e_photo,e_move,c_id,d_id,cp_id,u_id且上传成功,可是视图里没有更新的内容,高手请看下连接条件里有问题吗?
追答上传字段倒是不缺,所有连接ID都有,只是会不会某些ID没有存在于与EMPLOYEE连接的表中?
你如果把INNER JOIN 改成 left join ,然后处理一下与EMPLOYEE连接表字段的空值(使用ISNULL(字段名,'')或ISNULL(字段名,0)),就会发现问题了,你会发现有的边接表为空值,缺少某ID值。
你可以把图片中的语句用文本发上来,帮你改一下。
追问FROM dbo.units INNER JOIN
dbo.employee ON dbo.units.u_id = dbo.employee.u_id INNER JOIN
dbo.culture ON dbo.employee.c_id = dbo.culture.c_id INNER JOIN
dbo.duties ON dbo.employee.d_id = dbo.duties.d_id INNER JOIN
dbo.competence ON dbo.employee.cp_id = dbo.competence.cp_id INNER JOIN
dbo.sex ON dbo.employee.s_id = dbo.sex.s_id好的,感谢~发不了这么多,就发了下半段~
追答下半段这样改:
FROM dbo.units LEFT JOIN
dbo.employee ON dbo.units.u_id = dbo.employee.u_id LEFT JOIN
dbo.culture ON dbo.employee.c_id = dbo.culture.c_id LEFT JOIN
dbo.duties ON dbo.employee.d_id = dbo.duties.d_id LEFT JOIN
dbo.competence ON dbo.employee.cp_id = dbo.competence.cp_id LEFT JOIN
dbo.sex ON dbo.employee.s_id = dbo.sex.s_id
你先试一下,如果查询结果允许空值,就没问题了。如果不允许空值,你就需要把上半段再发过来
追问恩恩,这个都改成left join就能直接显示了!可是还一个视图是用这个视图跟其它几个表组成的,再用这种方法却依然不能同步显示~
我同时增加了trainlog里的e_number,ts_id,tk_id,tsite_id,w_id,tl_stdate,tl_ovdate,tl_text,tl_result,tl_number,tl_exdate和employee里的数据,刚刚的视图Emp_Units同步了,这个怎么还不行呢?
追答你这个视图前题是TRAINLOG的TK_ID字段必须要在TRAINKIND中存在才能够显示出来。
即然可以显示空记录,那么你可以把第一个连接改成FULL JOIN ,或者把TRANLOG表放到第一个位置才行。
本回答被提问者采纳