Access 列に数値を格納し、意味のある文字列を各値に関連付けるにはどうすればよいですか?
次のように、各値の意味を一度に定義し、それらの意味をデータシート ビューに表示できる場合、生の数値を見たくないからです。
ID Name Type
1 Jack 1 (Friend)
2 Jill 1 (Friend)
3 Diago 2 (Enemy)
4 Sally 3 (Colleague)
Access 列に数値を格納し、意味のある文字列を各値に関連付けるにはどうすればよいですか?
次のように、各値の意味を一度に定義し、それらの意味をデータシート ビューに表示できる場合、生の数値を見たくないからです。
ID Name Type
1 Jack 1 (Friend)
2 Jill 1 (Friend)
3 Diago 2 (Enemy)
4 Sally 3 (Colleague)
おそらく、少なくとも2つの異なるテーブルが必要です。1つは人のIDと名前を持ち、もう1つはその人との関係のタイプと説明を含むテーブルです。
人が複数の関係を持つことができる場合(たとえば、友人と同僚)、その人のID用の1つの列と、関係タイプのID用の別の列を持つ3番目のテーブルがあります。人が1つのタイプの関係しか持てない場合は、その人のタイプのIDを使用してPersonテーブルに3番目の列を追加するだけです。
テーブルからデータを取得するには、SQLステートメントでJOINを使用して、それぞれに指定したIDですべてのテーブルの行を結合します。
一般的に、ここにリレーショナルデータベースが何であるかを説明するリンクがあります。これは、Accessで主キーと外部キーの制約を使用してテーブル間の関係を作成する方法について説明しているMicrosoftOfficeのリンクです。ステップバイステップの説明とかなり関連性のある例(学生と成績)を含む別の例を次に示します。
タイプに魔法数を使用するのはなぜですか?言葉だけを使ってみませんか?
解決策1-単語を使用するだけで、魔法の数字は使用しないでください。
解決策2-マジックナンバーを単語にマップするテーブルを提供し、結合を使用します。
クエリでは、マジックナンバーの文字列値を定義する別のテーブルとの結合が必要になります。
SELECT ID, Name, Type_Text AS Type
FROM MyTable
INNER JOIN MyLookupTable
ON MyTable.Type = MyLookupTable.Type
私はあなたが機能を探していると思いますSWITCH
...
SELECT Name,
SWITCH(Type=1, "Friend", Type=2, "Enemy", Type=3, "Colleague") as Expr1
FROM MyTable
数が少ない (可能な値は 4 つだけ)。安定していると見なされます (新しい性別が発見される可能性はあまりなく、なぜ基準を変更するのですか?) したがって、SWITCH()
ステートメントは適切です:
SELECT SWITCH(
C1.sex_code = 9, 'corporate body',
C1.sex_code = 1, 'male',
C1.sex_code = 2, 'female',
TRUE, '(not known)'
) AS customer_person_type, ...
FROM Customers AS C1 ...
比較的多い(約175)。流動的であると見なされます (1 つの手がかりは、メンテナンスを担当する公的機関があることです)。したがって、これらはベース テーブルに最も適しています。
CREATE TABLE Currencies
(
currency_code CHAR(3) NOT NULL,
CHECK (currency_code NOT ALIKE '%[!A-Z]%'),
currency_name VARCHAR(30) NOT NULL
);
INSERT INTO Currencies VALUES ('AED', 'United Arab Emirates dirham');
INSERT INTO Currencies VALUES ('AFN', 'Afghani');
INSERT INTO Currencies VALUES ('ALL', 'Lek');
INSERT INTO Currencies VALUES ...
では、セックスと通貨のどちらがあなたに最適ですか? ;)
別のテーブルを作成する必要があるように思えます