ある属性X( 1 )を決めると、他の属性Y( AA )の値が一意に決まる
ある属性X( 2 )を決めると、他の属性Y( AB )の値が一意に決まる
ある属性X( 3 )を決めると、他の属性Y( AC )の値が一意に決まる
...
場合、「 Y は X に関数従属している 」といいます。
Y の種類が少数の場合は
IIf関数やSwitch関数を使って X を定義するのもいいでしょうけど
Y の種類が多い場合や、今後、Y の種類が増えることが想定される場合は
テーブル設計を見直したほうがいいでしょう。
CREATE TABLE t_分類マスタ
(
分類CD INT NOT NULL PRIMARY KEY
, 分類名 VARCHAR( 50 ) NOT NULL
);
分類CD | 分類名 |
---|---|
1 | AA |
2 | AB |
3 | AC |
4 | AD |
` sql | |
CREATE TABLE t_分類トラン | |
( |
入力ID COUNTER NOT NULL PRIMARY KEY
, 分類 VARCHAR( 50 ) NOT NULL
);
| 入力ID | 分類 |
|--------|:-----:|
| 1 | AA-01 |
| 2 | AB-01 |
| 3 | AB-02 |
| 4 | AA-02 |
| 5 | AA-03 |
| 6 | AC-01 |
| 7 | AB-03 |
| 8 | AA-04 |
| 9 | AB-04 |
| 10 | AB-05 |
だとすると
SELECT y.入力ID
, y.分類
, x.分類CD
FROM t_分類マスタ x
, t_分類トラン y
WHERE x.分類名 = Left$( y.分類, 2 )
ORDER BY 1 ;
| 入力ID | 分類 | 分類CD |
|--------|-------|--------|
| 1 | AA-01 | 1 |
| 2 | AB-01 | 2 |
| 3 | AB-02 | 2 |
| 4 | AA-02 | 1 |
| 5 | AA-03 | 1 |
| 6 | AC-01 | 3 |
| 7 | AB-03 | 2 |
| 8 | AA-04 | 1 |
| 9 | AB-04 | 2 |
| 10 | AB-05 | 2 |
通報 ...