如何在Access列中存储数字,然后将一些有意义的字符串与每个值相关联?
因为当我可以一次性定义每个值的含义时,我不想看原始数字,并且在数据表视图中显示这些含义,例如:
ID Name Type
1 Jack 1 (Friend)
2 Jill 1 (Friend)
3 Diago 2 (Enemy)
4 Sally 3 (Colleague)
答案 0 :(得分:3)
您可能至少需要两个不同的表格。一个具有人员的ID和名称,另一个表格具有与该人员相关的类型和描述。
如果一个人可以拥有多个关系(例如,朋友和同事),那么您将拥有第三个表,该表具有一列用于该人的ID,另一列用于关系类型的ID。如果一个人只能拥有一种类型的关系,那么你可以简单地在你的Person表中添加第三列,其中包含他们所处个人类型的ID。
要从表中获取数据,可以在SQL语句中使用JOIN,通过为每个表指定的ID将所有表的行连接在一起。
通常,here's a link描述了关系数据库的全部内容。这是一个Microsoft Office link,它讨论了如何使用Access中的主键和外键约束来创建表之间的关系,这可能对您有帮助。 Here's another一步一步的说明和一个相当相关的例子(学生和成绩)。
答案 1 :(得分:2)
为什么要使用魔术数字?为什么不直接使用?
解决方案1 - 只需使用单词,绝不使用幻数。
解决方案2 - 提供一个表格,将幻数映射到单词并使用连接。
答案 2 :(得分:1)
好吧,在你的查询中,你需要一个与另一个表的连接,为你定义魔术数字的字符串值:
SELECT ID, Name, Type_Text AS Type
FROM MyTable
INNER JOIN MyLookupTable
ON MyTable.Type = MyLookupTable.Type
答案 3 :(得分:1)
我认为您正在寻找SWITCH
功能......
SELECT Name,
SWITCH(Type=1, "Friend", Type=2, "Enemy", Type=3, "Colleague") as Expr1
FROM MyTable
答案 4 :(得分:0)
听起来像你需要创建另一个表
答案 5 :(得分:0)
数量少(只有四个可能的值)。被认为是稳定的(发现新性别的机会不大,为什么要改变标准?)因此,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 ...
哪个最适合你:性别或货币? ;)