看看如下两条sql语句得出的结果为什么不一样??

78815 2003-10-17 09:58:23
如下:
sql = "select sum(bsale),sum(lsale),sum(bmoney),sum(lmoney) from eday where time1=#" & str & "# group by unit"
sql = " select sum(bsale),sum(lsale),sum(bmoney),sum(lmoney) from eday where time1=#" & str & "#"
access数据库,eday表在str时间无数据,
根据我的理解,没有数据,那么得到的rs.recordcount就应该一样,但上一个得到的是0,下一个是1(是不是表示有记录??从那来的??)。
怎么分析??
...全文
38 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yoki 2003-10-18
  • 打赏
  • 举报
回复
第一个因为有group by unit
所以结果集中必定出现
unit sum(x) sum(y)等列
如果没有符合条件的unit,则无结果,只有列头
unit x y
-----------

如果有符合条件的那么结果为:
unit x y
----------
a 3 23
b 4 10
这种形式
若unit的值中有Null这一项,就会出现类似这样的结果
unit x y
----------
a 3 23
null 2 56
b 4 10

这样讲不知你明白没有?
zhongminsheng 2003-10-18
  • 打赏
  • 举报
回复
第一句对所有记录求和,因为在time 无记录所以得到的结果为一条记录,值 :NULL
(无分组 或者说全部记录分到一组中)
第二句是对unit 分组求和,因为在time无记录所以也就没有得出分组(分组为0 条)
zhongminsheng 2003-10-17
  • 打赏
  • 举报
回复
group by unit
wenhongL 2003-10-17
  • 打赏
  • 举报
回复
group by unit"
ffly 2003-10-17
  • 打赏
  • 举报
回复
看看time1=#"&str&"#是unit的数据
第一条sql有两个限制条件那!
rexyudl 2003-10-17
  • 打赏
  • 举报
回复
晕!看看UNIT
lxcc 2003-10-17
  • 打赏
  • 举报
回复
关键在unit
78815 2003-10-17
  • 打赏
  • 举报
回复
完了,这下我更加糊涂了,出来是null,null,null...,那第一个sql选择出来的也可作null,null.....讲,本来第一个句子还懂的,这下晕了,都不懂了。
还讲清楚些吧?
yoki 2003-10-17
  • 打赏
  • 举报
回复
你的第2中写法结果永远是1
因为如果没有满足条件的纪录
返回一条null,null,null...
即记录数为1
如果有满足条件的纪录
也是返回一条x,y,z,....
所以结果永远是1
你在查询分析器中执行一下语句体会一下
select sum(col1) from departments where 1=2 group by col1
select @@rowcount
select sum(col1) from departments where 1<>2 group by col1
select @@rowcount
78815 2003-10-17
  • 打赏
  • 举报
回复
我刚刚才学这个,
我也知道是group by unit 的原因,是为什么呢?下一个sql的rs.recordset为什么是1呢?

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧