Foxtable(狐表)用户栏目专家坐堂 → 想咨询一个:获取产品编号001最近一次采购时的订购数量 的好的sql语句


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

主题:想咨询一个:获取产品编号001最近一次采购时的订购数量 的好的sql语句

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


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
想咨询一个:获取产品编号001最近一次采购时的订购数量 的好的sql语句  发帖心情 Post By:2017/8/13 18:11:00 [只看该作者]

我有订单表A,里面有订单编号,订单日期

还有订单明细表B,里面有订单编号,产品编号,订购数量

 

他们是用订单编号做了关联。

 

现在我想提取出产品编号001最近一次采购时的订购数量,有什么快捷的代码?

 

我想到的是用sqlJoinDatatable查询出一个联合表后,再获取第一行,但是感觉这样只为了提取1行,而把产品001的所有订购明细都提取到了本地,很浪费资源。有更好的方法吗?

[此贴子已经被作者于2017/8/13 18:11:14编辑过]

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


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

为什么非要用sql语句?直接根据编号001find数据不行? http://www.foxtable.com/webhelp/scr/0396.htm

 

如果要生成查询表,参考 http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=104693&skin=0

 


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


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
回复:(有点甜)为什么非要用sql语句?直接根据编号0...  发帖心情 Post By:2017/8/13 18:33:00 [只看该作者]

因为的订单明细里没有日期,日期在订单主表里,sqlfind好像只能对本表的日期排序提取

 

或者大大告诉一下怎么写这个sqlfind语句,我参考下


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


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

关键是,什么是【最近一次】?最后添加的那一行是最近一次?那你可以根据 _Identify 列或者 _Sortkey 列排序。


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


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
回复:(有点甜)关键是,什么是【最近一次】?最后添...  发帖心情 Post By:2017/8/13 19:46:00 [只看该作者]

最近一次是,最近时间的。因为客户是可以自己手动修改订单日期的,所以identify不一定是最近那个进货。

 

因为erp里需要一个功能,按照最近一次采购价进货


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


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

 汗,你逻辑就有问题。根据什么确定?

 

 你明细表必须有时间列,如果没有,怎么知道哪天数据才是最近最新的?

[此贴子已经被作者于2017/8/13 19:48:26编辑过]

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


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
回复:(有点甜) 汗,你逻辑就有问题。根据什么...  发帖心情 Post By:2017/8/13 23:20:00 [只看该作者]

我的订单主表里有订单时间,我就是根据这个订单时间来判断。

 

表的架构就是

 

 


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

我设置了一个订单里,商品不能重复,相同的商品的数量会追加在一起


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


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

方法一:子表直接引用父表的订单时间列的值,用表达式列或者用代码赋值,都可以;这样就可以直接排序查找了;

 

方法二:先根据商品编号查找所有的订单编号,然后,根据订单编号,直接在主表查找出最近的一行记录,读取时间值,如代码

 

Dim idx As String = DataTables("订单明细").GetComboListString("商品='123'").Replace("|", "','")
Dim fdr As DataRow = DataTables("订单").find("订单编号 in ('" & idx & "')", "日期 desc")
Dim dr As DataRow = DataTables("订单明细").find("商品= '123' and 订单编号 = '" & fdr("订单编号") & "'")

 


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


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
回复:(有点甜)方法一:子表直接引用父表的订单时间...  发帖心情 Post By:2017/8/14 9:57:00 [只看该作者]

这2个都是需要把很多数据加载到本地再检索,我的初衷就是想后台直接获取到最近一次的价格的行,而不要加载大量的数据明细到本地。

 

我觉得我还是按照_identify 来排序算了,也算是个不太严谨但简单可行的方法


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


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

两表连接查询,取一行数据,也是瞬间完成的,不需要把数据弄到本地,直接用sqlcommand查询就好了。


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