创建使用多对多表的查询

Creating a query that uses many to many tables

我有一个包含学术论文的图书馆数据库。论文可能有多个共同作者,并且该信息保存在多对多 table 中,因为我也有 table 个作者。合著者table是这样的:

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

我需要创建一个查询 returns 关于特定论文的所有信息,包括它的合著者。当我尝试这样做时,我想到了这样的 table:

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

我不想重复。我还需要显示论文的引用信息,它也包含在一个多对多的 table like authors 和那些 2, the table returns 相同的信息 12论文有 3 位共同作者和 4 次引用的次数。我该如何管理?像这样的 table 会有所帮助:

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

或者如果您对 table 设计有更好的想法,我愿意接受。非常感谢。

我建议您保留最初的结果...

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 语言并非完全为样式目的而构建,您最好将此类格式留给电子表格程序或网站样式表。