现在有以下两个表:卡交易表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表中记录的方法来找,但这样会不会比较耗时间?有没有更好的办法?
  

解决方案 »

  1.   

    …………格式都乱了,重新编辑一下
    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          
    ------------------------------------------------------------------------------ 
      

  2.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式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)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  3.   

    card表中任意两张卡或同一张卡之间的记录
    这句没明白什么意思
      

  4.   

    这是我整理后的需求,还请各位赐教:
    -- PostgreSQLcreate 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
      
    */