一个项目对应多个控制计划,一个控制计划对应多个作业
他们之间的关系由编号关联,比如项目编号:M01。控制编号:M0101。作业编号:M010101
现在新建一个作业:作业名手动输入,根据已知的控制编号自动生成作业编号。
第一步:得到作业的上级编号为:M0101。 
第二步:查询数据库的作业表,以“M0101”查询并排序。
第三步:排序得到最大值。比如数据库中已经有2个作业,那么该作业编号为:M010102
第四步:以“M0101”为前缀字段,在最大值再+1。生成新的作业编号:M010103刚开始做PHP+MYSQL,请前辈们指教

解决方案 »

  1.   

    不推荐这种编号, 不过在作业表中设置 '项目编号','控制编号',两个外键。这样反而方便。PHP中你可以通过 select ifnull(mid(max(作业编号),6),0)+1 from 作业表 where 作业编号 like 'M0101%' 得到下一个 作业编号 
      

  2.   

    select max(作业编号) from 作业表
    where left(作业编号,6)='M0101'orselect count(作业编号) from 作业表
    where left(作业编号,6)='M0101'select right(concat('00',right(max(作业编号),2)+1),2) from 作业表
    where left(作业编号,6)='M0101'
      

  3.   

    select right(concat('00',right(max(作业编号),2)+1),2) from 作业表
    where left(作业编号,6)='M0101'
    应该满足你的要求了,不知道你是在网络上还是单机,如果是网络上用,
    用MAX有问题,主要是并发
      

  4.   

    正确的答案是: $sql1="select CONCAT('M0101.',LPAD(ifnull(mid(max(作业编号),6),0)+1, 2, '0')) from tbtask where left(作业编号,5) = 'M0101'";谢谢上面2位兄台指点。