请高手指教!(100分)

爽清

Unregistered / Unconfirmed
GUEST, unregistred user!
有三个表,icard.db(主表),consume.db(消费表),SaveMoney.db(存款表)
根据icard.db(主表)中的卡号与consume.db(消费表)的卡号建立连接,查找consume.db(消费表)
中的个人消费记录,并按日期升序排列,时间最早的一条记录的消费金额不予计算,如:2001-2-18与
2001-4-1,即2001-2-18消费记录的金额不予计算,通过上次消费后卡上的余额减去本次消费的金额等
于本次消费后的卡余额,与此同时判断SaveMoney.db(存款表)是否有存款,如果有则把存款金额加入
到consume.db(消费表)的卡余额之中。

请问那位高手能用SQL写一个大概。十分感谢

 
用一query招行一个sql语句
select * from consume order by datetime dec
WHILE NOT idcardtable.eof do
begin
对query1进行过滤
进行金额处理等。。。
icardtable.next;
end;
 
没有解决问题的给本所在,你忘掉了这是一个一对多形的关系呀,没有考虑到
SaveMoney.db(存款表)。
 
用Join outer进行组合关联
 
with query1 do
begin
close;
sql.clear;
sql.add('select fieldname1,fieldname2...');
sql.add('from icard as i,consume as c');
sql.add('where i.id=c.id') ;
sql.add('order by datetime');
open;
first;
if SaveMoney.locate(fieldbyname('id').asstring,'id',[]) then
begin
加上存款;
end;
next;
while not eof do
begin
金额处理;
if SaveMoney.locate(fieldbyname('id').asstring,'id',[]) then
begin
加上存款;
end;
end;
end;

 
一个SQL语句显然不行!
你自己编一段小程序就可以了!别偷懒。
 
顶部