【发布时间】:2010-05-14 16:42:15
【问题描述】:
我有一个 Access 数据库,其中包含两个通过 PK/FK 关联的表。不幸的是,数据库表允许重复/冗余记录,并使数据库有点混乱。我正在尝试找出可以解决问题的 SQL 语句。
为了更好地解释问题和目标,我创建了示例表作为参考: alt text http://img38.imageshack.us/img38/9243/514201074110am.png 您会注意到有两个表,一个 Student 表和一个 TestScore 表,其中 StudentID 是 PK/FK。
Student 表包含学生 John、Sally、Tommy 和 Suzy 的重复记录。换句话说,StudentID 为 1 和 5 的 John 是同一个人,Sally 2 和 6 是同一个人,依此类推。
TestScore 表将考试成绩与学生联系起来。
忽略 Student 表允许重复的方式/原因等 - 我试图完成的目标是更新 TestScore 表,以便它用相应的启用 StudentID 替换已禁用的 StudentID。因此,所有 StudentID's = 1 (John) 将更新为 5;所有 StudentID's = 2 (Sally) 将更新为 6,依此类推。这是我正在拍摄的结果 TestScore 表(请注意,不再引用禁用的 StudentID 的 1-4): alt text http://img163.imageshack.us/img163/1954/514201091121am.png 你能想到一个查询(与 MS Access 的 JET 引擎兼容)可以实现这个目标吗?或者,也许,您可以提供一些提示/观点,为我指明正确的方向。
谢谢。
【问题讨论】:
-
您的意思是发布表结构吗?你是如何识别重复的,是手动过程还是有另一个只包含重复的表,或者你只是使用同名的学生并希望不只有两个人实际上共享一个名字?
-
是的,我在图片参考中发布了这些结构。显然,您看不到图像 - 以下是指向我的示例表结构图像的直接链接:img38.imageshack.us/img38/9243/514201074110am.pngimg163.imageshack.us/img163/1954/514201091121am.png 在我的示例中,我只是通过名称字段来识别骗子。但在我的实际数据库中,它是通过产品序列号。
标签: sql ms-access duplicates sql-update orphan