1

我有一个名为 Master 的 Access 2007 表,其中包含以下列:

Master.UID, 
Master.[Team Comments], 
Master.[Judy Comments], 
Master.[Sue Comments], 
Master.[Paul Comments], 
Master.[CSE Comments], 
Master.[CSE Name], 
Master.[Sue Comments1], 
Master.[David Comments] 

我想创建一个名为 Comments 的新表,如下所示:

CommentID
UID
Name
Comment

这里有几个问题:

  1. 有两个苏评论栏;这些不应该被连接,而是为每个条目放置一个单独的行。
  2. 除了一个例外,Name 列的值在 Master 列的名称中
  3. 例外是 CSE 注释和 CSE 名称
  4. UID 是主表的外键
  5. 跳过任何空白评论字段,其中有很多。

如您所见,我正在尝试对一张 craaaaaazy 大桌子应用一点标准化。

蒂亚!

4

1 回答 1

2

这显然是一次性操作,因此无需在单个查询中执行此操作。
这意味着它实际上非常简单,因为您可以为每个值构建一个单独的查询,然后一个接一个地执行。

基本模式看起来像这样(对于Team Comments列)。

insert into comments (UID, Name, Comment)
select UID, 'Team', [Team Comments] from master where [Team Comments] is not null

(请注意,我假设CommentID是一个自动值字段,所以我根本不需要处理它)

对于这两Sue Comments列,您只需连续执行两个类似的查询:

insert into comments (UID, Name, Comment)
select UID, 'Sue', [Sue Comments] from master where [Sue Comments] is not null

insert into comments (UID, Name, Comment)
select UID, 'Sue', [Sue Comments1] from master where [Sue Comments1] is not null

而对于“CSE”列...我知道列NameCSE Comments列并不像其他示例中那样固定,但它应该取自CSE Name列。
正确的?如果是,那么查询需要如下所示:

insert into comments (UID, Name, Comment)
select UID, [CSE Name], [CSE Comments] from master where [CSE Comments] is not null
于 2012-05-21T20:14:38.463 回答