[前][次][番号順一覧][スレッド一覧]

mysql:5933

From: KAWAJI Shinya <KAWAJI Shinya <kawaji@xxxxxxxxxx>>
Date: Fri, 09 Aug 2002 05:32:49 +0900
Subject: [mysql 05933] Re: ID 番号の自動発行システム

かわじ、です。


> 実は「member_tsuika.php」「member_tsuika02.php」というwebページにて、
> MEMBER_T(MID_C int(7) zerofill not null primary key,MNAME_C varchar(50)
> NUMBER_T(NID_C int(7) zerofill not null primary key,NNAME_C varchar(8)
> という二つのテーブルに、下記のようにデータを登録するところまでは出来た
> のですが、NID_Cが「0100000」になったら、NNAME_Cを「mb00001」と変える事
> が出来ずに悩んでいます。
> 
>  ※MEMBER_T     ※NUMBER_T
> 
> MID_C   | MNAME_C  NID_C  | NNAME_C
> 0000001 | 田中     0000001 | ma00001
> 0000002 | 小泉     0000002 | ma00002
> 0000003 | 鈴木     0000003 | ma00003


他の方が書かれている方法(アプリケーション側で処理)がベストだと
思いますが、あえてトリッキーな別解をば。


create table MEMBER_T (
  MID_C int(7) zerofill not null primary key,
  MNAME_C varchar(50)
);
create table NUMBER_T (
  NID_C int(7) zerofill not null primary key,
  NNAME_C varchar(8)
);

insert MEMBER_T (MID_C, MNAME_C) values
  (      1, '田中'),
  (      2, '小泉'),
  (      3, '鈴木'),
  (  99999, '佐藤'),
  ( 100000, '中村'),
  ( 199998, '山口'),
  ( 199999, '加藤'),
  ( 299997, '前田'),
  ( 299998, '宮内'),
  (2599974, '大野'),
  (2599975, '細川');,

insert NUMBER_T select MID_C, concat(char((109 + TRUNCATE((MID_C - 1)
  / 99999, 0) / 26), (97 + TRUNCATE((MID_C - 1) / 99999, 0) % 26)),
  LPAD((MID_C % 100000 + TRUNCATE((MID_C - 1) / 99999, 0)) % 100000, 5,
  '0')) from MEMBER_T order by MID_C;

select * from MEMBER_T left join NUMBER_T on MID_C = NID_C
  order by MID_C;

+---------+---------+---------+---------+
| MID_C   | MNAME_C | NID_C   | NNAME_C |
+---------+---------+---------+---------+
| 0000001 | 田中    | 0000001 | ma00001 |
| 0000002 | 小泉    | 0000002 | ma00002 |
| 0000003 | 鈴木    | 0000003 | ma00003 |
| 0099999 | 佐藤    | 0099999 | ma99999 |
| 0100000 | 中村    | 0100000 | mb00001 |
| 0199998 | 山口    | 0199998 | mb99999 |
| 0199999 | 加藤    | 0199999 | mc00001 |
| 0299997 | 前田    | 0299997 | mc99999 |
| 0299998 | 宮内    | 0299998 | md00001 |
| 2599974 | 大野    | 2599974 | mz99999 |
| 2599975 | 細川    | 2599975 | na00001 |
+---------+---------+---------+---------+
11 rows in set (0.00 sec)


#トリッキー過ぎるよ・・・


[前][次][番号順一覧][スレッド一覧]

      5930 2002-08-09 01:44 ["hagi wata" <todorok] ID 番号の自動発行システム               
      5931 2002-08-09 01:51 ┣[<tadashi@xxxxxxxxxx>]                                       
      5932 2002-08-09 03:03 ┣["Yuya.Nishida." <yuy]                                       
->    5933 2002-08-09 05:32 ┣[KAWAJI Shinya <kawaj]                                       
      5934 2002-08-09 13:26 ┗[<futaroh@xxxxxxxxxx>]