• ベストアンサー

【PHP,MySQL】連番の付け方について

連番を下記の様に付けたいのですが、どなたかご教授ください。 参考になるURLでも結構です。 【環境】 ・MySQL バージョン: 5.1.41 ・PHP バージョン: 5.3.1 【現状】 ○親テーブル:nou_itiran ・entry_id [int(11)][auto_increment]主 ・その他カラム ○子テーブル:nou_ko ・ko_id [int(11)][auto_increment]主 ・entry_id [int(11)]←親テーブルの主キー値が入る ・その他カラム 2つのテーブルを作成しています。 親テーブルのカラム[entry_id]に対して、子テーブルの[ko_id]に 副番号をつけたいのですが、考え方がまとまりません。 現在は、 [親entry_id]/[子ko_id] 456/1 456/2 457/3 457/4 458/5 458/6 459/7 ・ ・ のように、[親entry_id]と[子ko_id]は個々に連番が発生します。 *********** 【達成したい内容】 456/1 456/2----★ 457/1 457/2----★ 458/1 458/2 459/3----★ [親entry_id]に対して、何番まで使われたか(★)を他のテーブルで 保持しておけばよいのかも??と思うのですが、 具体的な手法がわかりません。 ************* MySQLへのセレクト、インサートはPHPから行っております。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

つい先日も同じような質問に回答を入れているんですが・・・ こんな感じでよいですか? select (select count(*)+1 from nou_ko as ko2 where ko2.entry_id=ko1.entry_id and ko2.ko_id<ko1.ko_id) rank ,ko_id,entry_id from nou_ko as ko1 ちなみに質問の命題がまちがっています。 458/1 458/2 459/3----★ これは 458/1 458/2 458/3----★ ですよね? そうでなければロジックが意味不明

m_toma
質問者

お礼

ご指摘の通りです。 ご回答ありがとうございました。 達成できました。

その他の回答 (1)

回答No.2

ストレージエンジンがMyISAMでいいなら、 auto_increment を primary keyの2番目の構成列とすることで、MySQL側に管理を任せられます。 http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html

m_toma
質問者

お礼

ご回答ありがとうございました。 達成できました。

関連するQ&A