Foxtable(狐表)用户栏目专家坐堂 → [求助]關於SELECT


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

主题:[求助]關於SELECT

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


加好友 发短信
等级:婴狐 帖子:63 积分:464 威望:0 精华:0 注册:2016/6/1 18:11:00
[求助]關於SELECT  发帖心情 Post By:2016/9/27 15:13:00 [只看该作者]

現在有一個訂單表,總共有四個列,"產品", "供應商", "單價", "交易日期"
想要生成一個SQL查詢表,查詢每一個產品的訂單紀錄,但是只想根據每一個產品的最近一次交易日期來查詢單價
比方說底下的表
產品 供應商 單價 交易日期
A     XXX   10   2016-9-27
A     XXX   5     2016-9-26
B     XXX   20   2016-9-25
B     XXX   6     2016-9-24
C     XXX   30   2016-9-23
C     XXX   7     2016-9-22
生成後的查詢表應該是:
A     XXX   10   2016-9-27
B     XXX   20   2016-9-25
C     XXX   30   2016-9-23

請問這樣SQL語句要怎麼寫


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


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/27 15:34:00 [只看该作者]

以下sel ect中的空格去掉

sel ect a.* from {订单} a inner join (sel ect 产品,Max(交易日期) as 交易日期 from {订单} b group by 产品) as b on a.产品 = b.产品 and a.交易日期 = b.交易日期

sel ect * from {订单} a where a.交易日期 = (sel ect Max(交易日期) from {订单} as b where a.产品 = b.产品 )

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


加好友 发短信
等级:婴狐 帖子:63 积分:464 威望:0 精华:0 注册:2016/6/1 18:11:00
  发帖心情 Post By:2016/9/27 15:38:00 [只看该作者]

感謝有點藍大大

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


加好友 发短信
等级:婴狐 帖子:63 积分:464 威望:0 精华:0 注册:2016/6/1 18:11:00
  发帖心情 Post By:2016/9/27 16:11:00 [只看该作者]

有點藍大大, 我發現用您的SQL語句,生成查詢表花的時間相當久,估計是因為我的訂單表有七萬多筆數據。
我原先的語句是:SEL-ECT DISTINCT 产品供應商單價交易日期 FROM {订单} ORDER BY 交易日期 DESC
這樣速度快很多,可是不知道為什麼產品還是有重複, 明明產品用了DISTINCT


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


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

给产品和日期设置创建索引试试

DISTINCT是指同时比较后面的所有字段都同时不重复,何况也不能只取最大日期

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


加好友 发短信
等级:婴狐 帖子:63 积分:464 威望:0 精华:0 注册:2016/6/1 18:11:00
  发帖心情 Post By:2016/9/27 16:29:00 [只看该作者]

原來如此,是我誤解了DISTINCT的用法,謝謝您
另外我剛試用了另一個辦法:
先用SEL-ECT 产品供應商單價交易日期 FROM {订单} ORDER BY 交易日期 DESC
生成查詢表後
Tables("查詢表").RepeatFilter("产品", 1)
就可以把重複的產品去掉,而且因為查詢表照著日期降序排列,所以去掉的重複值剛好是去掉最新一筆交易日期以外的數據
現在數據太多,還無法百分之百肯定,但是看了一下前面的一些數據,似乎可行
跟您求證一下,RepeatFilter是否會照著表的Sortkey去排除重複值

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


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/27 16:55:00 [只看该作者]

RepeatFilter跟Sortkey没有任何关系

RepeatFilter只能筛选指定某一列的重复值,并不能判断是否最大日期

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


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/27 16:57:00 [只看该作者]

2楼的sql不该比你加载7W的数据要慢的,加上适当的索引测试

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


加好友 发短信
等级:婴狐 帖子:63 积分:464 威望:0 精华:0 注册:2016/6/1 18:11:00
  发帖心情 Post By:2016/9/27 17:16:00 [只看该作者]

好的 我試試 謝謝

 回到顶部