- - PR -
IDの取得方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-11-05 10:31
こんにちは。
SQLをはじめて一ヶ月ほどのものです。 下記のような3つのFIELDでPKを構成する テーブルがあります。 FIELD-1(PK) varchar(32) FIELD-2(PK) varchar(32) FIELD-3(PK) int FIELD-4 ・ ・ ・ FIELD-3に振るIDですが、レコード全体を通してのユニークキーではなく、 FIELD-2内におけるユニークキーを振りたいと考えております。 その場合、FIELD-3に振るIDを取得する方法はありますでしょうか。 宜しくお願いいたします。 イメージ図 FIELD-1 FIELD-2 FIELD-3(PK) FIELD-4 ・・・ 'CODE1' 'ITEM1' 1 'CODE1' 'ITEM1' 2 'CODE1' 'ITEM1' 3 'CODE1' 'ITEM2' 1 'CODE1' 'ITEM2' 2 'CODE1' 'ITEM2' 3 | ||||
|
投稿日時: 2007-11-05 11:26
RDBMS名とバージョンを明記してください。
| ||||
|
投稿日時: 2007-11-05 21:26
未確認ですが これで取得できるはず
select max(FIELD-3) +1 from hogehoge where FIELD-2 ='ITEM1' または select max(FIELD-3) +1 from hogehoge where FIELD-1 ='CODE1' and FIELD-2 ='ITEM1' | ||||
|
投稿日時: 2007-11-05 23:45
目的をはっきりさせないと、いつかどこかで破綻する可能性があります。 「FIELD-2内におけるユニークキー」で良いのならば、「レコード全体を通してのユニークキー」であっても、大は小を兼ねるはずです。それならば、「シーケンス」(やオートナンバーなど)を使うことで目的は簡単に果たせるはずです。(「ユニーク」という言葉を文字どおり受け止めた場合です。) もしそれでダメだと言われるのならば、暗黙のうちに「FIELD-2内において、1から始まる連番でないといけない」などといった要求仕様があるのだろうと思います。もしそうならば、それを明示され、されに、それはなんのために必要なのか?なども明示されたほうが良いです。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||
|
投稿日時: 2007-11-06 10:16
七味唐辛子様、回答ありがとうございます。
教えていただいた方法でやってみます。 unibonさま。 私も、オートナンバーを使用したかったのですが、 要求仕様のため、使わなければなりません。 説明が不足しており、申し訳ありません。 忠犬さま。 MS-SQL2005(Ver.9.00.1399.00)です。 説明が不足しており、申し訳ありません。 |
1