以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  想咨询一个:获取产品编号001最近一次采购时的订购数量 的好的sql语句  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=105184)

--  作者:chen3728060
--  发布时间:2017/8/13 18:11:00
--  想咨询一个:获取产品编号001最近一次采购时的订购数量 的好的sql语句

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

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

 

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

 

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

 

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

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

--  作者:有点甜
--  发布时间: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
--  发布时间:2017/8/13 18:33:00
--  回复:(有点甜)为什么非要用sql语句?直接根据编号0...

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

 

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


--  作者:有点甜
--  发布时间:2017/8/13 19:00:00
--  

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


--  作者:chen3728060
--  发布时间:2017/8/13 19:46:00
--  回复:(有点甜)关键是,什么是【最近一次】?最后添...

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

 

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


--  作者:有点甜
--  发布时间:2017/8/13 19:48:00
--  

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

 

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

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

--  作者:chen3728060
--  发布时间:2017/8/13 23:20:00
--  回复:(有点甜) 汗,你逻辑就有问题。根据什么...

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

 

表的架构就是

 

 


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

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


--  作者:有点甜
--  发布时间: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
--  发布时间:2017/8/14 9:57:00
--  回复:(有点甜)方法一:子表直接引用父表的订单时间...

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

 

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


--  作者:有点甜
--  发布时间:2017/8/14 10:02:00
--  

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