以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 想咨询一个:获取产品编号001最近一次采购时的订购数量 的好的sql语句 (http://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 -- 回复:(有点甜) 汗,你逻辑就有问题。根据什么... 我的订单主表里有订单时间,我就是根据这个订单时间来判断。
表的架构就是
我设置了一个订单里,商品不能重复,相同的商品的数量会追加在一起 |
-- 作者:有点甜 -- 发布时间:2017/8/14 0:23:00 -- 方法一:子表直接引用父表的订单时间列的值,用表达式列或者用代码赋值,都可以;这样就可以直接排序查找了;
方法二:先根据商品编号查找所有的订单编号,然后,根据订单编号,直接在主表查找出最近的一行记录,读取时间值,如代码
Dim idx As String = DataTables("订单明细").GetComboListString("商品=\'123\'").Replace("|", "\',\'")
|
-- 作者:chen3728060 -- 发布时间:2017/8/14 9:57:00 -- 回复:(有点甜)方法一:子表直接引用父表的订单时间... 这2个都是需要把很多数据加载到本地再检索,我的初衷就是想后台直接获取到最近一次的价格的行,而不要加载大量的数据明细到本地。
我觉得我还是按照_identify 来排序算了,也算是个不太严谨但简单可行的方法 |
-- 作者:有点甜 -- 发布时间:2017/8/14 10:02:00 -- 两表连接查询,取一行数据,也是瞬间完成的,不需要把数据弄到本地,直接用sqlcommand查询就好了。 |