如何将数字存储在 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)
您可能需要至少两个不同的表。一个包含人员的 ID 和姓名,另一个表包含他们与该人的关系的类型和描述。
如果一个人可以有多个关系(例如一个朋友和一个同事),您将有第三个表,其中一列是人的 ID,另一列是关系类型的 ID。如果一个人只能拥有一种类型的关系,那么您可以简单地将第三列添加到您的 Person 表中,其中包含他们所属的人的类型的 ID。
要从表中获取数据,您可以在 SQL 语句中使用 JOIN,通过您为每个表指定的 ID 将所有表的行连接在一起。
一般来说,这里有一个链接,它描述了关系数据库的全部内容。这是一个Microsoft Office 链接,它讨论了在 Access 中使用主键和外键约束创建表之间的关系,这可能会对您有所帮助。这是另一个分步说明和一个相当相关的示例(学生和成绩)。
为什么使用幻数作为类型?为什么不直接使用单词?
解决方案 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
听起来你需要创建另一个表
数量少(只有四个可能的值)。被认为是稳定的(发现新性别的机会不大,为什么要改变标准?)因此,一个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 个)。被认为是不稳定的(一个线索是它有一个负责维护的官方机构)。因此,这些在基表中最合适:
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 ...
那么哪个最适合你:性还是货币?;)