这个需求,除了存储过程,还有其它方法么?

zhangweiwindow 2012-09-06 05:51:24
现在有以下两个表:卡交易表trans和卡信息表card。
表结构

card
-----------
card(卡号)|
-----------
11
15
-----------


trans
-----------------------------------------------------------------------------
card (卡号) | amount(金额) | transdate(交易日期) | transtime (交易时间) |
-----------------------------------------------------------------------------
11 2 20120102 112531
12 2 20120102 112633
13 5 20120102 130159
11 2 20120102 152533
13 5 20120102 153857
15 2 20120102 155143
13 5 20120102 160159
15 2 20120102 172633
15 5 20120102 190160
16 2 20120102 172633
16 5 20120102 190160
------------------------------------------------------------------------------

有这样的需求:在trans表中找出card表中任意两张卡或同一张卡之间的记录。
我的想法是使用轮循trans表中记录的方法来找,但这样会不会比较耗时间?有没有更好的办法?
  
...全文
148 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2012-09-07
  • 打赏
  • 举报
回复
card表中任意两张卡或同一张卡之间的记录


这句没明白什么意思
zhangweiwindow 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

card表中任意两张卡或同一张卡之间的记录


这句没明白什么意思
[/Quote]
我已经重新整理了需求,还希望您不吝赐教。
zhangweiwindow 2012-09-07
  • 打赏
  • 举报
回复
这是我整理后的需求,还请各位赐教:


-- PostgreSQL

create table managecard (
id serial,
managecard char(18) not null
);

insert into managecard(managecard) values ('207999900100000020');
insert into managecard(managecard) values ('207999900100000021');
insert into managecard(managecard) values ('207999900100000022');

create table trans (
id serial,
card char(18) not NULl,
transtype char(10) not null,
transtime char(6)
);

insert into trans (card, transtype, transtime ) values ('207999900100000026', '消费', '050000');
insert into trans (card, transtype, transtime ) values ('207999900100000020', '消费', '050100');
insert into trans (card, transtype, transtime ) values ('207999900100000023', '存款', '050200');
insert into trans (card, transtype, transtime ) values ('207999900100000024', '积分消费', '050300');
insert into trans (card, transtype, transtime ) values ('207999900100000022', '启用', '050400');
insert into trans (card, transtype, transtime ) values ('207999900100000026', '消费', '050500');
insert into trans (card, transtype, transtime ) values ('207999900100000023', '积分消费', '050600');
insert into trans (card, transtype, transtime ) values ('207999900100000021', '消费', '050700');
insert into trans (card, transtype, transtime ) values ('207999900100000020', '积分消费', '050800');
insert into trans (card, transtype, transtime ) values ('207999900100000021', '消费', '050900');
insert into trans (card, transtype, transtime ) values ('207999900100000023', '启用', '051000');


/*
过程:
 以上trans表数据从第一条记录a开始,如果a的卡号在managecard表中存在,则此条数据其后
 的各条数据的卡号都记录在a的卡号旗下,直到遇到下一条卡号在managecard中存在的数据记录b.
 如果b的卡号在managecard表中存在,则此条数据其后
 的各条数据的卡号都记录在b的卡号旗下,直到遇到下一条卡号在managecard中存在的数据记录c...,
 如此往复。

根据以上数据及需求得出的结果应该是:
managecard card transtype transtime
-------------------------------------------------------------------
207999900100000020 207999900100000023 存款 050200
207999900100000020 207999900100000024 积分消费 050300
207999900100000022 207999900100000026 消费 050500
207999900100000022 207999900100000023 积分消费 050600
207999900100000021 207999900100000023 启用 051000

*/
zhangweiwindow 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html

1. 你的 create table xxx .. 语……
[/Quote]

感谢您的提醒,以后我会注意。
ACMAIN_CHM 2012-09-06
  • 打赏
  • 举报
回复
(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html

1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)

这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

zhangweiwindow 2012-09-06
  • 打赏
  • 举报
回复
…………格式都乱了,重新编辑一下
trans
-----------------------------------------------------------------------------
card (卡号) | amount(金额) | transdate(交易日期) | transtime (交易时间) |
-----------------------------------------------------------------------------
11 2 20120102 112531
12 2 20120102 112633
13 5 20120102 130159
11 2 20120102 152533
13 5 20120102 153857
15 2 20120102 155143
13 5 20120102 160159
15 2 20120102 172633
15 5 20120102 190160
16 2  20120102 172633
16 5  20120102 190160
------------------------------------------------------------------------------

56,940

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧