Access数据库中多值字段的关系
Posted
技术标签:
【中文标题】Access数据库中多值字段的关系【英文标题】:Relation on a multi-valued field in an Access database 【发布时间】:2014-01-21 16:01:12 【问题描述】:有人知道我如何在一个字段中输入多个值来建立两个不同记录之间的关系吗?
谷歌翻译(德语):
使用多值字段
在大多数系统中,DBMS(数据库管理系统),包括早期的 在 Microsoft Access 版本中,您只能将单个值存储在 场地。在 Microsoft Office Access 2007 中,您还可以创建字段 包含多个值,例如类别列表 你已经分配了一个条件。多值字段用于特定 情况,例如当您使用 Office Access 2007 将工作保存在 包含以下字段之一的 Windows SharePoint Services 3.0 列表 Windows 中可用的具有多个值的字段类型 数据 SharePoint 服务。
本主题介绍如何在 Office Access 2007 和 Windows SharePoint Services,如何创建 多值字段和使用,以及如何使用多值字段 查询。
【问题讨论】:
用人们可以理解的语言提问会有所帮助。 这对我来说是一个有趣的问题,因为我在一年前处理过这个问题。我的解决方案是将多个值存储为分隔字符串。然后,我使用自定义 VBA 函数来解析字符串并将每个值与另一个表中的值进行比较,而不是两个表之间的常规连接。结果缓慢而令人困惑,但可行。如果有更好的解决方案,我正在倾听。 【参考方案1】:您可以在 JOIN 条件中使用多值查找字段(通过它们的.Value
属性),但请注意,如果在连接的两侧都有这样的字段,那么当 any 时它将产生匹配 项在连接字段上匹配,而不是在 所有 项匹配时。视情况而定,这可能是可取的,也可能是不可取的。
案例 1:过敏学生
学校管理员需要跟踪过敏的学生,并为他们提供在学校食堂用餐时应避免的膳食清单。
[学生]
ID Student Allergies
-- ------- ---------
1 Alice Eggs, Soy
2 Bradley Peanuts
3 Carol
4 Dennis Soy
[用餐]
ID Meal Allergens
-- ------------- ---------
1 Thai stir-fry Peanuts
2 Tofu omlette Eggs, Soy
3 Waffles Eggs
查询
SELECT Students.Student, Students.Allergies, Meals.Meal, Meals.Allergens
FROM Students INNER JOIN Meals ON Students.Allergies.Value = Meals.Allergens.Value;
返回
Student Allergies Meal Allergens
------- --------- ------------- ---------
Alice Eggs, Soy Tofu omlette Eggs, Soy
Alice Eggs, Soy Waffles Eggs
Bradley Peanuts Thai stir-fry Peanuts
Dennis Soy Tofu omlette Eggs, Soy
这是合适的,因为 Alice 应该避免食用含有她过敏的任何成分的食物。
案例 2:酒店要求
[旅行者]
ID Traveller Requirements
-- --------- -------------------------
1 Gord free WiFi, in-room coffee
[酒店]
ID Hotel Amenities
-- ------------ ----------------------------
1 Budget Motel free WiFi, in-room coffee
2 Fancy Hotel in-room coffee, room service
查询
SELECT Travellers.Traveller, Travellers.Requirements, Hotels.Hotel, Hotels.Amenities
FROM Hotels INNER JOIN Travellers ON Hotels.Amenities.Value = Travellers.Requirements.Value;
返回
Traveller Requirements Hotel Amenities
--------- ------------------------- ------------ ----------------------------
Gord free WiFi, in-room coffee Budget Motel free WiFi, in-room coffee
Gord free WiFi, in-room coffee Fancy Hotel in-room coffee, room service
查询返回两个属性,因为它们都提供室内咖啡。不过,Fancy Hotel 不提供免费 WiFi,所以我宁愿不要住在那里。在这种情况下,默认的连接行为是不可取的(对我来说)。
【讨论】:
以上是关于Access数据库中多值字段的关系的主要内容,如果未能解决你的问题,请参考以下文章
Access 2013:删除包含多值字段的记录的正确方法是啥?