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>]