在福克斯表中,我有4个字段:ordernum,orderdate,ordertotal,custpk。Foxpro选择每个客户的最新订单
什么是foxpro select语句将每个custpk的最近订单的所有这些字段返回?
在福克斯表中,我有4个字段:ordernum,orderdate,ordertotal,custpk。Foxpro选择每个客户的最新订单
什么是foxpro select语句将每个custpk的最近订单的所有这些字段返回?
你的表结构,你想要什么不是很清楚。您如何定义给定客户的“最近订单”?假设orderNum是该表中的主键,并且您为每个客户具有最高orderNum的行中的给定客户决定“最近订单”。那么很容易和一个VFP SELECT命令就足够了(实际上有许多SQL选择将返回你所需要的结果的变化下面是那些将是最有效的一个。):
select * from myTable ;
where orderNum in ;
(select max(orderNum) from myTable group by custPK)
BTW, VFP的SQL接近ANSI-SQL 92
我需要一个FoxPro命令,而不是SQL数据库
让我们首先应该说你不会得到你想要一个FoxPro命令行的东西。
取而代之,在Foxpro中获得这个最方便的方式是使用Foxpro的SQL查询命令在FP/VFP数据表上运行,并将结果数据导入数据表/光标。
SELECT CustPk, OrderNum, OrderDate, OrderTotal FROM MyDataTable ORDER BY CustPk, OrderDate Desc INTO CURSOR OrderedData READWRITE
* --- Now ordered data is in memory cursor, use it however you need ---
* --- Each Customer's Most Recent Order will be first record ---
SELECT OrderedData
* --- You might just want to BROWSE the results to understand how the data appears ---
* --- Or you can do anything else with the data ---
< do whatever >
有办法得到的只有每位客户最近的订单,但是从这里开始,看看是否得到你所需要的。
BTW:你可能想在花一些时间在免费,在线VFP教程视频: Free Visual Foxpro Videos
好运
我想找到如何只用sql查询命令
嗯,我只是一个SQL查询命令,这样做是做,但你必须跟进其他一些代码。
编辑:糟糕:我忘记了Custpk是整数。
我正在修改SQL查询语法以将其考虑在内。
虽然它仍然不是单行法,另一种可能是:
* --- Get reference records of only customer's last order date ---
SELECT STR(CustPk) AS cCustPk, MAX(OrderDate) AS LstOrdrDt FROM MyDataTable GROUP BY CustPk INTO CURSOR LstOrds READWRITE
* --- Now use that to get the complete last order for each customer ---
SELECT * FROM MyDataTable WHERE (STR(CustPk) + DTOS(OrderDate)) IN (SELECT cCustPk + DTOS(LstOrdrDt) AS KeyExp FROM LstOrds) INTO CURSOR OnlyLstOrds READWRITE
* --- Now you have ONLY the last orders ---
SELECT OnlyLstOrds
< do whatever >
注意上面的代码是现成的,袖口和没有测试过,所以有可能是它其中一个错字你可以修复。
还要注意的是自由的一个,在该网站上线VFP教程视频被命名为:的FoxPro和SQL语言
好运
VFP支持子查询和派生查询。你可以简单地使用派生表来编写:select * from myTable t1 inner join(通过custPK从myTable组中选择custPK,max(OrderDate)作为maxDate)t1.custPK = t2.custPK和t1.OrderDate = t2.OrderDate (但是,这并不意味着要返回最近的订单,除非在给定的日期,对于给定的客户只有单一订单)。 –
之前,我们可以给你一个答案,第一要问的问题是:ordernum和orderdate的字段类型是什么。 OrderNum是数字还是字符类型?订购日期是日期,日期时间还是字符类型? SQL查询语法可能会根据您的答案而有所不同。 – Dhugalmac
订单日期是日期字段,ordernum是整数,ordertotal是N 9,2,Custpk是整数。为了清楚起见,这是一个福克斯表,我需要一个foxpro命令,而不是SQL数据库。 – EddieC