我正在使用MS Access 2010进行一些数据转换。具体来说,我需要为concept
(由rxnconso.rxcui
汇总)和word
(由drugwords.id
汇总)之间的多对多关系创建数据结构。 drugwords.id
的值需要与下图中name
表的words
的唯一值相对应。)。为此,我需要创建两个表drugwords
和drugwordsConsoJunction
,并将现有表words
的内容分解为drugwords
和drugwordsConsoJunction
表。目标表的结构是:
drugwords table: (this table needs to be created)
id (autonumber pk needs to be created from distinct values of words.name)
name
drugwordsConsoJunction: (this table needs to be created)
word_id (fk to drugwords.id)
rxcui (fk to rxnconso.rxcui)
rxnconso (this table already exists):
rxcui
...other fields
此转换的源表名为words
,有两列; rxcui
的值和name
的值。从下面的图片中可以看出,给定name
值可能有很多rxcui
个值。下面的第二张图显示了给定rxcui
值可能有多个name
值。
如何根据上述规范编写SQL以将单词转换为drugwords和drugwordsConsoJunction?
我已将数据库的副本上传到文件共享站点。您可以下载at this link。
答案 0 :(得分:2)
如果建议的[drugwords]表已经在其[name]列中具有唯一值,那么您不需要AutoNumber ID列,您只需将[name]字段用作主键即可。在这种情况下,映射"单词"只需执行
即可创建相应的[rxcui]值SELECT DISTINCT rxcui, [name] INTO drugwordsConsoJunction FROM words
然后你就可以使用"单词"他们自己而不是从(不同的)"单词"引入另一层映射。到(不同的)" ID"。