Foxtable(狐表)用户栏目专家坐堂 → [求助]关于关联表的计算问题


  共有2401人关注过本帖树形打印复制链接

主题:[求助]关于关联表的计算问题

帅哥哟,离线,有人找我吗?
81538475
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1287 积分:10362 威望:0 精华:1 注册:2018/1/20 12:40:00
[求助]关于关联表的计算问题  发帖心情 Post By:2021/1/20 9:23:00 [只看该作者]

A表与B表使用编号 关联。
图片点击可在新窗口打开查看 图片点击可在新窗口打开查看

那么如果想计算B表中,数据类型不为C的数据的总和,用什么方法最快呢。我现在的方法就是记录A表中,数据类型不为C的编号,然后 用 sqlcomputer 去计算。但是这样的话,数据库的数据越多,这种方法就会变得非常慢了吧。
目前由于数据库的数据量就已经比较大了。

[此贴子已经被作者于2021/1/20 9:33:17编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106089 积分:539550 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/20 9:33:00 [只看该作者]

如果是要一次性统计所有数据,使用sql,或者分组统计等工具。

如果是在边录入数据的时候,边统计,使用sqlcomputer应该没有什么问题

 回到顶部
帅哥哟,离线,有人找我吗?
81538475
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1287 积分:10362 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2021/1/20 9:41:00 [只看该作者]


是边录入数据变计算的情况
Dim st As Date = Date.Now
Dim ids As String
For Each dr As DataRow In DataTables("xmzb").SQLSelect("关联单='已清算'")
    ids = ids & ",'" & dr("BH") & "'"
Next
ids= ids.Trim(",")
output.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")

目前637条数据,光计算记录编号就花了2.67秒,如果这样的话,还有其他好的办法没呀

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106089 积分:539550 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/20 9:49:00 [只看该作者]

DataTables("xmzb").sqlcomputer (“count(关联单)”,"关联单='已清算'")

 回到顶部
帅哥哟,离线,有人找我吗?
81538475
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1287 积分:10362 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2021/1/20 9:56:00 [只看该作者]

我是要计算另外一个表的数值,不是计算这个表的关联单的数量呀。
我在三楼给的代码只是记录编号的时间完整的是这样
Dim ids As String
For Each dr As DataRow In DataTables("xmzb").SQLSelect("关联单='已清算'")
    ids = ids & ",'" & dr("BH") & "'"
Next
ids= ids.Trim(",")
DataTables("另一个表").sqlcomputer (“sum(数据)”,"bh in (" & ids & ")")



就是想问下,有没有更快的计算方法。现在录入一个数字要等2-3秒,有点问题。
[此贴子已经被作者于2021/1/20 9:57:22编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106089 积分:539550 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/20 10:03:00 [只看该作者]

DataTables("另一个表").sqlcomputer (“sum(数据)”,"bh in (select bh from xmzb where 关联单='已清算')")

 回到顶部
帅哥哟,离线,有人找我吗?
81538475
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1287 积分:10362 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2021/1/20 10:09:00 [只看该作者]

图片点击可在新窗口打开查看多谢多谢

 回到顶部