创建使用多个表

时间:2015-05-31 21:56:00

标签: sql database ms-access many-to-many

我有一个包含学术论文的图书馆数据库。论文可能有多个共同作者,而且这些信息保存在多对多表中,因为我还有一个作者表。共同作者表就像:

Paper ID    Co-author ID
Paper_1     Author_2
Paper_1     Author_5
Paper_1     Author_7
Paper_3     Author_5
...

我需要创建一个查询,返回有关特定论文的所有信息,包括它的共同作者。当我尝试这样做时,我想出了一个这样的表:

Paper ID  Paper Name  Publication Date  Co-author ...
Paper_1   asd         2013              Author_2
Paper_1   asd         2013              Author_5
Paper_1   asd         2013              Author_7

我不想要这种重复。我还需要显示论文的引文信息,该论文也包含在像作者这样的多对多表中,当论文有3位共同作者和4篇引文时,该表返回相同的信息12次。 。我该如何管理?这样的表会有所帮助:

Paper ID  Paper Name  Publication Date  Co-author  Cited by
Paper_1   asd         2013              Author_2   Paper_15
                                        Author_5   Paper_22
                                        Author_7   Paper_23
                                                   Paper_25

或者如果您对表格设计有更好的了解,我会对这些表格持开放态度。非常感谢。

1 个答案:

答案 0 :(得分:0)

我建议你保留初步结果......

Paper ID  Paper Name  Publication Date  Co-author ...
Paper_1   asd         2013              Author_2
Paper_1   asd         2013              Author_5
Paper_1   asd         2013              Author_7

如果您检查上述内容,则每行都有一个Paper ID作为标识符。您想要的结果实际上是不完整的数据,您实际要求的是对于查看者来说不完整的NULL数据。

Paper ID  Paper Name  Publication Date  Co-author  Cited by
Paper_1   asd         2013              Author_2   Paper_15
NULL      NULL        NULL              Author_5   Paper_22
NULL      NULL        NULL              Author_7   Paper_23
NULL      NULL        NULL              NULL       Paper_25

查看您想要的结果,对于Paper_25,技术上没有与Cited By行相关的数据使其变得多余。 SQL语言并非完全是为了样式而构建的,您最好将这种格式保留为电子表格程序或网站样式表。