gpt4 book ai didi

sql - 规范化为 Microsoft Access 中的第一种形式 - 是否有半自动方法?

转载 作者:行者123 更新时间:2023-12-02 00:02:14 26 4
gpt4 key购买 nike

假设您有数以万计的记录,如下例所示,并且您有一列,每行中有数百个“最喜欢的食物”,需要将其规范化到自己的表格和行中。手动执行此操作将花费很长时间,而“;”符号,如牛排所示;葡萄;鸡蛋,妨碍了 Microsoft Access 的表格向导,它似乎不起作用。

我怎样才能半自动地让这些讨厌的行与多个项目除以 ;'s 在他们自己的表中规范化?

 Incorrect
╔══════╤═══════════╤═══════════════════╗
║ ID │ Name │ Favorite Foods ║
╠══════╪═══════════╪═══════════════════╣
║ 1 │ John │Steak; Grapes; Eggs║
╟──────┼───────────┼───────────────────╢
║ 2 │ Jeff │ Eggs; Toast ║
╟──────┼───────────┼───────────────────╢
║ 3 │ Joel │Pear; Onion; Apples║
╚══════╧═══════════╧═══════════════════╝


Normalized
╔══════╤═══════════╗ ╔══════╤═══════════════════╗
║ ID │ Name ║ ║ ID │ Favorite Foods ║
╠══════╪═══════════╣ ╠══════╪═══════════════════╣
║ 1 │ John ║ ║ 1 │ Steak ║
╟──────┼───────────╢ ╟──────┼───────────────────╢
║ 2 │ Jeff ║ ║ 1 │ Grapes ║
╟──────┼───────────╢ ╟──────┼───────────────────╢
║ 3 │ Joel ║ ║ 1 │ Eggs ║
╚══════╧═══════════╝ ╟──────┼───────────────────╢
║ 2 │ Eggs ║
╟──────┼───────────────────╢
║ 2 │ Toast ║
╟──────┼───────────────────╢
║ 3 │ Pear ║
╟──────┼───────────────────╢
║ 3 │ Onion ║
╟──────┼───────────────────╢
║ 3 │ Apples ║
╚══════╧═══════════════════╝

最佳答案

将用户的 IDName 加载到新表中。

SELECT DISTINCT o.ID, o.Name
INTO tblUsers
FROM OldTable AS o;

创建一个新的空表,tblFavorites,用来保存用户的[Favorite Foods]。然后创建并运行一个 VBA 过程,该过程使用 DAO 记录集从 OldTable 中提取信息并将其添加到 tblFavorites

Dim db As DAO.Database
Dim rsSrc As DAO.Recordset
Dim rsDest As DAO.Recordset
Dim varFoods As Variant
Dim varItem As Variant

Set db = CurrentDb
Set rsSrc = db.OpenRecordset("OldTable", dbOpenTable)
Set rsDest = db.OpenRecordset("tblFavorites", dbOpenTable, dbAppendOnly)

Do While Not rsSrc.EOF
varFoods = Split(rsSrc![Favorite Foods], ";")
For Each varItem In varFoods
rsDest.AddNew
rsDest!ID = rsSrc!ID
rsDest![Favorite Foods] = Trim(varItem)
rsDest.Update
Next
rsSrc.MoveNext
Loop

关于sql - 规范化为 Microsoft Access 中的第一种形式 - 是否有半自动方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20637424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com