- PR -

IDの取得方法

1
投稿者投稿内容
nyan
常連さん
会議室デビュー日: 2007/01/18
投稿数: 21
投稿日時: 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

忠犬
大ベテラン
会議室デビュー日: 2006/05/01
投稿数: 109
投稿日時: 2007-11-05 11:26
RDBMS名とバージョンを明記してください。
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 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'
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2007-11-05 23:45
引用:

nyanさんの書き込み (2007-11-05 10:31) より:
FIELD-3に振るIDですが、レコード全体を通してのユニークキーではなく、
FIELD-2内におけるユニークキーを振りたいと考えております。


目的をはっきりさせないと、いつかどこかで破綻する可能性があります。
「FIELD-2内におけるユニークキー」で良いのならば、「レコード全体を通してのユニークキー」であっても、大は小を兼ねるはずです。それならば、「シーケンス」(やオートナンバーなど)を使うことで目的は簡単に果たせるはずです。(「ユニーク」という言葉を文字どおり受け止めた場合です。)

もしそれでダメだと言われるのならば、暗黙のうちに「FIELD-2内において、1から始まる連番でないといけない」などといった要求仕様があるのだろうと思います。もしそうならば、それを明示され、されに、それはなんのために必要なのか?なども明示されたほうが良いです。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
nyan
常連さん
会議室デビュー日: 2007/01/18
投稿数: 21
投稿日時: 2007-11-06 10:16
七味唐辛子様、回答ありがとうございます。
教えていただいた方法でやってみます。

unibonさま。
私も、オートナンバーを使用したかったのですが、
要求仕様のため、使わなければなりません。
説明が不足しており、申し訳ありません。

忠犬さま。
MS-SQL2005(Ver.9.00.1399.00)です。
説明が不足しており、申し訳ありません。
1

スキルアップ/キャリアアップ(JOB@IT)