Foxtable(狐表)用户栏目专家坐堂 → [求助]combine的问题


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

主题:[求助]combine的问题

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]combine的问题  发帖心情 Post By:2018/6/21 16:50:00 [只看该作者]

Dim bd1 As New SQLGroupTableBuilder("统计表1","进货单")
Dim
dt1 As fxDataSource
bd1.Groups.AddDef(
"型号") '根据型号分组
bd1
.Totals.AddDef("数量","进货_数量") '对数量进行统计
bd1
.Totals.AddExp("进货_金额","数量 * 单价") '对金额进行统计

bd1.filter = "月份=201801“    ‘只统计2018年1月的单子
dt1
= bd1.BuildDataSource()

Dim
bd2 As New SQLGroupTableBuilder("统计表2","销售单")
Dim
dt2 As fxDataSource
bd2.Groups.AddDef(
"型号") '根据型号分组
bd2
.Totals.AddDef("数量","销售_数量") '对数量进行统计
bd2.Totals.AddExp(
"销售_金额","数量 * 售价") '对金额进行统计

bd2.filter = 月份=201801"
dt2
= bd2.BuildDataSource()


dt1.Combine("型号",dt2,"型号") '将销售统计数据组合到进货统计数据

dt1.Combine("型号",dt3,"型号") '将退货统计数据组合到进货统计数据
dt1
.Show("统计表1") '显示统计结果

问题是:bd1中假设有100种商品,但bd2中可能有120种。

如何只出现bd1中的100种商品?

[此贴子已经被作者于2018/6/21 16:50:04编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/21 17:03:00 [只看该作者]

方法一:用sql语句处理 inner join 或者 left join

 

方法二:在你得到的结果后,进行一下筛选,设置统计表1的 型号 in (表A的型号)


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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/6/21 17:04:00 [只看该作者]

1、SQL当然好了
2、数据量大的情况下,用in的效率实在是不行呀
[此贴子已经被作者于2018/6/21 17:04:59编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/21 17:34:00 [只看该作者]

那就自己写sql语句实现功能呗,你是不会写还是怎样?只有这种方法效率最高。

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/6/21 17:41:00 [只看该作者]

SQL倒是可以,ACCESS可以自己生成的。直接在ACCESS中拖拉即可。
但是有些功能,依赖SQL效率不高啊。比如数据量大,而且要用like的话,那还真是不行。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/21 17:47:00 [只看该作者]

1、SQLGroupTableBuilder也是动态合成sql语句执行而已,和你自己写sql语句没有什么区别。

 

2、sql效率是否高,取决于你对语句的优化,以及,你数据库表结构的优化。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/21 17:48:00 [只看该作者]

既然like效率不高,那就想办法不要用like,绕开它。

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/6/21 18:05:00 [只看该作者]

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=120462
这个帖子里,使用like去找上级节点直至顶级,数据量小的时候,速度很快,但是如果WL表的数据行数达到几千行的时候,执行就会其慢无比。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/21 18:23:00 [只看该作者]

效率低的例子做一个发上来测试。

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/6/22 0:10:00 [只看该作者]

本来数据比这个多,截掉了一部分
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试输出20180616.zip


 回到顶部
总数 17 1 2 下一页