设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3535|回复: 18
打印 上一主题 下一主题

【讨论】SQL语句的奇怪问题

[复制链接]
跳转到指定楼层
1#
发表于 2015-8-5 12:11:35 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
没问题的语句如下【由于暂时限制SQL语句,只能贴图了】:

如果把f_ofr_deal_id = 77(dbo.B_DEALER.DEAL_NAME = '荔湾福淼'表中,deal_id对应的f_ofr_deal_id 正是77去掉就查不出来了。为什么?同事说,NOT IN有记录条数的限制,不过刚接触SQL Server,没听说过这回事。

另外,如果改为LEFT JOIN,同样查不出来,为什么【注:里面的join部分都是主键或者索引的】:






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2015-8-5 12:20:46 | 显示全部楼层
第一个搞懂了。not in 不能包含null的,所以加上not null可以达到同样的效果:
AND  f_ofr_cuid IS NOT NULL
第二个问题还没解决……即改left join查不出来的问题。
3#
 楼主| 发表于 2015-8-5 13:46:10 | 显示全部楼层
风中漫步 发表于 2015-8-5 13:42
你的设计太复杂了,看不懂.提供点小知识吧,你自己看是否有用.LEFT JOIN好像是以基表为准,其他表没有的以null ...

ERP是用友那边开发的,基本结构看过了,似乎不符合第三范式,但我没法改,也没时间去改
我唯一能做的是根据预设条件在ADP里创建视图或者存储过程,以便提取数据。
4#
 楼主| 发表于 2015-8-5 16:43:19 | 显示全部楼层
laimf 发表于 2015-8-5 16:32
是哪一类数据没查出来呢?

第二个截图的查询显示为空白,不知道哪里出问题了。
B_CUSTOMER表为主表,F_OUTFORM为子表(以CUID为键连接)。理论上将Not in改成Left join应该是这样的,不知道“不包含”在SQL Server里是否可以是用null。
5#
 楼主| 发表于 2015-8-6 11:01:46 | 显示全部楼层
zhuyiwen 发表于 2015-8-6 09:09
不知这样是否有正确的结果?
(很郁闷,回复不能文本)

已经成功了。不知道是不是复杂的查询都需要设置为主从关系呢?还是逻辑上存在错误?
6#
 楼主| 发表于 2015-8-8 12:28:28 | 显示全部楼层
purplerose 发表于 2015-8-8 10:54
请问您是直接引用SQL里的表通过关联来提取数据呢?还是弄一个临时表来提取呢?我个人认为用临时表相对原表 ...

当时是用ADP创建视图处理的。因为可能每个月都要提取1次
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-17 06:49 , Processed in 0.095649 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表