2013-09-30 144 views
0

我正在爲學術論文創建一個存檔。每篇論文可能有一位作者或多位作者。我創建以下列方式表:將三個表連接在一起

  • 表1:PaperInfo - 每行包含紙張
  • 表2的信息:PaperAuthor - 只有兩列:包含PaperID,並且屬於AuthorID
  • 表3:AuthorList - 包含作者信息。

還有一個與表4相關的表4,表4列出了作者所屬的大學列表,但如果過於複雜,我將暫時忽略它。

我希望有一個查詢,將所有三個表連接在一起,並在表中顯示記錄的紙張的信息,與諸如下列:

  • 文章
  • 論文作者

列「Paper Authors」在某些情況下將包含多個作者。

我已經寫了下面的查詢:

SELECT a.*,b.*,c.* 
FROM PaperInfo a, PaperAuthor b, AuthorList c 
WHERE a.PaperID = b.PaperID AND b.AuthorID = c.AuthorID 

到目前爲止,我已經得到每行的結果是每行一個作者。我希望在一列中包含更多作者。無論如何,這可以做到嗎?

注意:我使用Access 2010作爲我的數據庫。

+1

這取決於您使用的是哪種SQL風格。例如:這可以在PostgreSQL(使用array_agg函數)/ MySQL(使用group_concat函數)中輕鬆完成。所以,告訴我們你正在使用什麼SQL數據庫。 – 2013-09-30 12:07:19

+0

您正在使用哪些DBMS? Postgres的?甲骨文? –

回答

-1

你在追求的是內連接。

SQL JOIN子句用於根據兩個或多個表之間的公用字段合併行。 最常見的連接類型是:SQL INNER JOIN(簡單連接)。 SQL INNER JOIN返回滿足條件的多個表中的所有行。

http://www.w3schools.com/sql/sql_join.asp

您可能需要內部結合了組加入,給你1紙在結果許多作者。

GROUP BY語句與聚合函數 一起使用,以按一個或多個列對結果集進行分組。

http://www.w3schools.com/sql/sql_groupby.asp

+0

他已經在使用內部連接,只是使用舊式語法。 –

+0

問題是,如何返回1列中的幾位作者! –

+0

一個寧靜的觸發器在那裏開心。查看我的編輯。 – Gusdor

1

直接SQL不幸的是,這是不可能的。您需要使用處理語言才能獲得您之後的結果。

0

如果您知道每篇論文的最大作者數(例如3或4),那麼可以使用三重或四重左連接。