2009年1月8日星期四

FoxPro8: update with join

元旦那天,一个高中同学找来,要我改一个FoxPro8的程序,生成满足一定要求的抽样,听起来不复杂。我没碰过那么古老的数据库软件,问,FoxPro支持SQL么,他说支持一部分,我说那好吧我试试看。
最关键的一步是让FoxPro8的update语句支持跨表(只需要自然连接),这是SQL标准,但FoxPro8还不支持。Google了一通,找到了解决方案,虽然不是很理解,但是照猫画虎勉强拿来用了。


SET RELATION TO k INTO R IN S
这里k是表R和S的公共字段,都在k上建了索引


REPLACE myfield WITH myvalue IN S FOR FOUND("R")
这样做结果相当于SQL语句
UPDATE S, R
SET S.myfield = myvalue
WHERE S.k = R.k

非标准的SQL语法让我颇费周折……

一个历史太悠久的公司,不敢轻易升级业务系统的软件,导致越往后工作越没效率。
这也是为什么工业革命之后英国一度辉煌,但是后来还是被美国超过的缘故。
这也是Diane解释FreeWheel之所以能快速发展的原因之一:没有历史包袱,敢用最新最好的技术。

1 条评论:

孙挺 说...

元涛大哥,越发有仰视你的感觉~~~
技术真牛!

你对Mathematica有研究么?