以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 查询表加载,为何记录数与实际不符? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=97140) |
-- 作者:luodang2050 -- 发布时间:2017/3/6 20:58:00 -- 查询表加载,为何记录数与实际不符? 如题,在sql建立查询表,显示记录数为n1,但加载进狐表,记录数n2<n1,这是为何? 注:表为联合查询表
|
-- 作者:有点蓝 -- 发布时间:2017/3/6 21:25:00 -- 怎么加载的?有多少数据,有没有加载条件 |
-- 作者:luodang2050 -- 发布时间:2017/3/6 22:43:00 -- 如下查询语句,建立sql查询表,预览有510多条数据,实际加载进来只有400条,未设置条件。 SELECT dbo.U_人员档案登记.RYID, dbo.U_人员档案登记.姓名, dbo.U_人员档案登记.姓, dbo.U_人员档案登记.首字母, dbo.U_人员档案登记.重名标识, dbo.U_人员档案登记.性别, dbo.U_人员档案登记.身份证号, dbo.U_人员档案登记.归类, dbo.U_人员档案登记.出生日期, dbo.U_人员档案登记.民族, dbo.U_人员档案登记.身份证住址, dbo.U_人员档案登记.签发机关, dbo.U_人员档案登记.有效期始, dbo.U_人员档案登记.有效期止, dbo.U_人员档案登记.人员备注, dbo.U_人员档案登记.婚姻状况, dbo.U_人员档案登记.政治面貌, dbo.U_人员档案登记.参加工作日期, dbo.U_人员档案登记.籍贯, dbo.U_人员档案登记.联系电话, dbo.U_人员档案登记.相照, dbo.U_人员档案登记.身份证电子版, dbo.U_社保缴交统计.单位编号 AS 社保_单位编号, dbo.U_社保缴交统计.个人编号 AS 社保_个人编号, dbo.U_社保缴交统计.缴交状态 AS 社保_缴交状态, dbo.U_社保缴交统计.更新日期 AS 社保_更新日期, dbo.U_社保缴交统计.最近连续月数 AS 社保_最近连续月数, dbo.U_社保缴交统计.连续月数_养老, dbo.U_社保缴交统计.连续月数_医疗, dbo.U_社保缴交统计.连续月数_工伤, dbo.U_社保缴交统计.连续月数_失业, dbo.U_社保缴交统计.连续月数_生育, dbo.U_职称证.职称系列, dbo.U_职称证.职称名称, dbo.U_职称证.职称专业, dbo.U_职称证.证书编号, dbo.U_职称证.验证 AS 职称_验证 FRO M dbo.U_社保缴交统计 RIGHT OUTER JOIN dbo.U_人员档案登记 ON dbo.U_社保缴交统计.姓名 = dbo.U_人员档案登记.姓名 AND dbo.U_社保缴交统计.身份证号 = dbo.U_人员档案登记.身份证号 LEFT OUTER JOIN dbo.U_建造师 ON dbo.U_人员档案登记.姓名 = dbo.U_建造师.姓名 AND dbo.U_人员档案登记.身份证号 = dbo.U_建造师.身份证号 LEFT OUTER JOIN dbo.U_学历证 ON dbo.U_人员档案登记.姓名 = dbo.U_学历证.姓名 AND dbo.U_人员档案登记.RYID = dbo.U_学历证.RYID LEFT OUTER JOIN dbo.U_职称证 ON dbo.U_人员档案登记.RYID = dbo.U_职称证.RYID AND dbo.U_人员档案登记.姓名 = dbo.U_职称证.姓名
|
-- 作者:有点蓝 -- 发布时间:2017/3/6 22:45:00 -- 分析缺少的数据有什么共性 |
-- 作者:luodang2050 -- 发布时间:2017/3/6 22:56:00 -- 姓名不重复,但是没有设置这个条件,加载进来会自动去重? |
-- 作者:有点蓝 -- 发布时间:2017/3/6 23:07:00 -- 应该是和sql多个表的连接方式有关,from后面这样试试 FRO M dbo.U_人员档案登记 LEFT OUTER JOIN dbo.U_社保缴交统计 ON dbo.U_社保缴交统计.姓名 = dbo.U_人员档案登记.姓名 And dbo.U_社保缴交统计.身份证号 = dbo.U_人员档案登记.身份证号 LEFT OUTER JOIN dbo.U_建造师 ON dbo.U_人员档案登记.姓名 = dbo.U_建造师.姓名 And dbo.U_人员档案登记.身份证号 = dbo.U_建造师.身份证号 LEFT OUTER JOIN dbo.U_学历证 ON dbo.U_人员档案登记.姓名 = dbo.U_学历证.姓名 And dbo.U_人员档案登记.RYID = dbo.U_学历证.RYID LEFT OUTER JOIN dbo.U_职称证 ON dbo.U_人员档案登记.RYID = dbo.U_职称证.RYID And dbo.U_人员档案登记.姓名 = dbo.U_职称证.姓名 |
-- 作者:luodang2050 -- 发布时间:2017/3/6 23:21:00 -- http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=84180&skin=0 查找到相关帖子,问题一样,但是我设置了主键列,问题依然不解决。sql查询语句应该是没问题的,预览是能够看到正确结果的
|
-- 作者:有点蓝 -- 发布时间:2017/3/7 8:29:00 -- 方便导数据上例子看看。有数据分析才能定位问题 |
-- 作者:luodang2050 -- 发布时间:2017/3/7 9:05:00 -- 数据库为sql,没时间做例子,测试select语句加上如下自定义字段(_Identify)作为主键,但采用副本加载方式,默认还是以a为主键,依然会自动去重。 当设为fill方式,与预览效果一致了,且默认会以 _Identify为分页依据,竟然完美解决了数据丢失及分页加载问题。所以判断副本加载方式,是会有潜规则的,帮助文件没有,希望能够点明
select row_number() over(order by a) _Identify,a,b,c fro m .... |
-- 作者:有点色 -- 发布时间:2017/3/7 9:18:00 -- 1、你现在sql测试窗口测试sql语句是否正确 http://www.foxtable.com/webhelp/scr/1484.htm
2、默认,第一列是主键,会去重复的。所以,你可以用全部表的主键构造第一列,如代码
Select Convert(varchar, 表a._Identify) + Convert(varchar, 表B._Identify) As 主键列 From |