为什么使用票据后要添加记录呢,直接在该票据上修改num_used不就行了吗,
这样不是更方便?

解决方案 »

  1.   

    疑问1:
    lag: 新开票据标志(新添加一组票据标记为1,使用过程中插入的数据标记为0)
    autoid为1、2、4、6的是超级管理员给管理员新开通的票据(flag标记为0),其他的是在使用过程中新增的数据。
    这两句矛盾?有一句写反了?疑问2:
    每个管理员可以有多组票据,但必须在一组使用完时再用另一组,而且是从小的那一组开始用,再用大的票据组。
    autoid userid num_start num_end num_used flag
    1 2 1 1000 0 0
    2 2 1 1000 0 0
    票据号为什么会有重复的呢?相同的票据号怎么区分呢?疑问3:
    3 2 1 1000 1 1
    4 3 1001 3000 0 0
    5 2 1 1000 2 1
    不是“但必须在一组使用完时再用另一组” 吗,为什么2同时在用两组?
      

  2.   

    为什么使用票据后要添加记录呢,直接在该票据上修改num_used不就行了吗,
    这样不是更方便?
    ===================================
    他要记录每个票据的,有的票据是作废的,也要在数据库里能查找到。
    所以每个记录都要放在里。
      

  3.   

    3 2 1 1000 1 1 第一次使用的。
    4 3 1001 3000 0 0使用过程中又开通一组新的票据。
    5 2 1 1000 2 1第二次使用的。哦,那为什么不使用update,3 2 1 1000 1 1 第一次使用的。
    4 3 1001 3000 0 0使用过程中又开通一组新的票据。使用票据后 update 记录33 2 1 1000 2 1 第二次使用的。(这样不用每次插入新记录)
    4 3 1001 3000 0 0使用过程中又开通一组新的票据。这样保证每个用户正在使用的记录只有一条
      

  4.   

    不能update啊,每组数据都有用处的。
      

  5.   

    那还是象berg说的修改比较好吧,
    要保存作废的,不如另加一张废票表。
      

  6.   

    就你目前的表:
    如何去查寻每个管理员自己的票据组,select * from table where userid=2 order by num_start, num_used并找到当前正在使用的那组票据,不致于混乱。select * from table where userid=2 where flag=1 order by num_start, num_used如果该管理员没有票据,或票据用完时,就要提醒。还有当一组票据用完时,如何去配对
    该管理员的下一组较小的票据组,也就是换一组票据,重新开始使用。select userid, min(num_end - num_used) from table where flag=1 order by userid
    这个里面等于0的user就是用完了的,需要领新票据,然后update flag=0
      

  7.   

    前二个问题helloyou0已经解答了,
    最后一个有些问题
    我觉得最后一个问题楼主的意思是找出某个管理员的当前最小可用票据组,
    应该这样
    select * from table where flag=0 and userid=2 order by num_start limit 1;