【发布时间】:2013-08-11 02:32:43
【问题描述】:
我的要求有点奇怪和具体,请多多包涵。
我有一个 Access 2003 数据库,其中有一个 Comments 表,其中有几十万行。有几个字段 - 我们称它们为 A, B, C, D 和 comment。列A-C 构成表的PK。因此,您可以有 5、10 或 50 行具有不同的 cmets,但都属于 A-C PK。
我有另一个名为 CORE 的表,其中包含一个表 core,其中包含字段 A, B, C, D (A-C PK) 和 comment_value_insert。
我想做什么:
在Comments 中,对于相同A-C 行的每个“集合”(字段D 可以不同),如果它们的comment 值都不匹配某个值(我们称之为critical),那么在CORE 中查找同一行并在comments 表中插入一个带有A-D 和Comments.comment = core.comment_value_insert 的新行。
我什至不确定这是否可以使用 SQL(也许是 VBA?因此是标签)。有什么建议吗? 如需进一步说明,请询问。
提前非常感谢。
编辑
准确地展示我想要的:
如果我的Comments 表看起来像
A | B | C | D | Comment
1 2 3 b val1
1 2 3 x val2
1 2 3 a val3
2 9 8 z val4
2 9 8 a val5
3 3 3 x val6
END
我的CORE 表看起来像
A | B | C | D | Comment_value_insert
1 2 3 u critical1
2 9 8 t critical2
4 8 6 x critical3
END
然后我希望将CORE 中的critical1 行插入Comments 以及critical2 行,但不是critical3 行。
那么Comments表中的最终产品将是
A | B | C | D | Comment
1 2 3 b val1
1 2 3 x val2
1 2 3 a val3
1 2 3 u critical1
2 9 8 z val4
2 9 8 a val5
2 9 8 t critical2
3 3 3 x val6
END
【问题讨论】:
-
所以您想在 SQL 或 Access 中执行此操作?
-
如果每个 A-D“集”可以有多个评论,那么 A-D 就不是 Comments 表的 PK。假设 A-D+comment 或 A-D,commentID 是,对吗?此外,您问题的标题谈到了替换值,并且仅在该行不存在时才创建该行,但您在问题的正文中没有说任何内容。
-
另一个问题:查询应该在“评论”表的哪个位置查找“评论”字段中的值“关键”?这是一个静态值吗?还是应该查找 core.comment_value_insert 字段中包含的值?如果您查找像“Critical”这样的静态值,并且“Core”表中的对应值是“Hello”,则查询将尝试插入新记录 A,B,C,D,"Hello " 每当您调用它时,因为这不会改变“评论”表中没有 A、B、C、D、“关键”记录的情况。对吗?
-
@twoleggedhorse 在这种情况下两者会相同吗?我正在使用 Access 2003,我认为有一个 SQL 解决方案来解决这个问题
-
@Clon 啊,是的,我的错 - 假设 D 是,就像评论字段也不是 PK。在“评论”表中,查询应该查看“评论”字段中是否存在值“关键”——该字段是静态的。如果“cmets”字段不包含整个 A-C 行集的“关键”值,则从 CORE 复制带有 comment_value_insert 值(这将是“关键”)的行。希望这更有意义。
标签: sql ms-access vba ms-access-2003