好的,我正在创建一个程序,它利用dbgrid和ado-queries来处理来自Microsoft访问数据库的表。
该计划专为拥有忠诚度计划的企业而设计,会员可以注册,并且必须跟踪购买。这是包含交易的表格:
现在我要做的是运行一个ado查询,该查询将从该表中选择某个成员ID,然后我想从该adoquery的结果中添加所有“PointsAwarded”。所以我可以获得一个会员获得的积分总额。
这似乎很难完成,因为我一直在寻找几天并且没有找到任何有用的东西。
Thanx任何帮助!
答案 0 :(得分:2)
如果你知道要寻找什么,那就不那么难了。 :)
您可以按特定列进行分组,然后在其他列上使用聚合函数。在这种情况下,我将每个MemberId的所有记录分组在一起,以获得奖励积分的总和:
select
t.MemberId,
sum(t.PointsAwarded) as TotalPoints
from
Transactions t
group by
t.MemberId
答案 1 :(得分:1)
如果您想获得所有会员的总积分奖励,请使用Golez的答案。
如果您希望PointAwarded为特定成员,那么您只需执行此操作:
SELECT SUM(PointsAwarded) AS TotalPointsAwarded
FROM Transactions
WHERE MemberID = 3
以上示例为您提供会员3的总数。
您希望参数化查询,以便传入变量以获取会员ID。
您希望阅读组件的Parameters属性上的文档,因为它与Delphi版本不同。
但是,一旦您对查询进行了参数化,那么当您调用查询时,就会执行此操作,其中MyADOQuery是组件的名称:
MyADOQuery.Active := False;
MyADOQuery.Parameters.ParamByName('MemberID').Value := 3;
MyADOQuery.Active := True;