Sql 把三张桌子连在一起
我正在为学术论文建立档案。每篇论文可以有一位作者,也可以有多位作者。我以以下方式创建了表:Sql 把三张桌子连在一起,sql,ms-access-2010,Sql,Ms Access 2010,我正在为学术论文建立档案。每篇论文可以有一位作者,也可以有多位作者。我以以下方式创建了表: 表1:PaperInfo-每行包含纸张上的信息 表2:PaperAuthor-只有两列:包含PaperID和AuthorID 表3:AuthorList-包含作者信息 还有一个表4链接到表4,其中包含作者所属大学的列表,但我现在将其略去,以防过于复杂 我希望有一个查询将所有三个表链接在一起,并在表中显示记录集的纸张信息,列如下: 论文标题 论文作者 在某些情况下,“论文作者”专栏将包含多个作者 我
- 表1:PaperInfo-每行包含纸张上的信息
- 表2:PaperAuthor-只有两列:包含PaperID和AuthorID
- 表3:AuthorList-包含作者信息李>
- 论文标题
- 论文作者
SELECT a.*,b.*,c.*
FROM PaperInfo a, PaperAuthor b, AuthorList c
WHERE a.PaperID = b.PaperID AND b.AuthorID = c.AuthorID
到目前为止,我得到的结果是每行一个作者。我希望在一个专栏中包含更多作者。这件事能在任何情况下完成吗
注意:我正在使用Access 2010作为我的数据库。您需要的是一个内部连接 SQL JOIN子句用于根据两个或多个表之间的公共字段合并两个或多个表中的行。 最常见的联接类型是:SQL内部联接(简单联接)。SQL内部联接返回联接所在的多个表中的所有行 条件满足 您可能希望将内部联接与一个组相结合,为结果中的许多作者提供一篇论文 GROUP BY语句与聚合一起使用 函数按一列或多列对结果集进行分组
此功能不是SQL标准的一部分,但不同的供应商有相应的解决方案,例如,请参见。在直接SQL中,不幸的是,答案是不可能实现。你需要使用一种处理语言来获得你想要的结果 如果您知道每篇论文的最大作者数(例如3或4),您可以使用三倍或四倍的左连接。既然您提到您正在使用Access 2010,请参考此问题: 特别是,请阅读指向
您可能需要实现一个自定义函数,但第二个url满足您的要求。他已经在使用内部连接,只是使用了老式语法。问题是,如何在一列中返回多个作者!这是一个相当令人兴奋的否决票。看我的编辑。@NevilleK似乎需要一个来达到我们孩子想要的结果。这就是我们在这里的原因,不是吗?这取决于您使用的SQL风格。例如:这可以在PostgreSQL(使用array\u agg函数)/MySQL(使用group\u concat函数)中轻松实现。那么,告诉我们您使用的是什么SQL数据库。您使用的是哪些DBMS?博士后?神谕