2013-05-26 110 views
1

我有以下的數據庫strucutureSQL查詢與結表合併行

1表名爲Books(BOOKID,標題) 1表署名作者(的AuthorID,AUTHORNAME) 1接線表命名BooksAuthors(的BookID,屬於AuthorID )與關係到其他2個表

我使用這個查詢:

Select 
    Books.BookId, 
    Books.Title, 
    Authors.AuthorName 
From 
    (Books Inner Join 
    BooksAuthors On BooksAuthors.BookId = Books.BooksId) Inner Join 
    Authors On BooksAuthors.AuthorId = Authors.AuthorId 

我得到的是這樣的:

BookId   Title   AuthorName 
001   Title1   Name1 
001   Title1   Name2 
001   Title1   Name3 
002   Title2   Name5 
002   Title2   Name6 

我奇怪的是有可能做到的查詢將返回是這樣的:

BookId   Title   AuthorName 
001   Title1   Name1;Name2;Name3 
002   Title2   Name5;Name6 
+0

您使用的數據庫是? – rtcherry

+0

該數據庫是在ms訪問 – user2422053

回答

0

您可以使用GROUP_CONCAT()

SELECT DISTINCT 
    Books.BookId, 
    Books.Title, 
    GROUP_CONCAT(Authors.AuthorName,'; ') 
FROM 
    (Books Inner Join 
    BooksAuthors On BooksAuthors.BookId = Books.BooksId) Inner Join 
    Authors On BooksAuthors.AuthorId = Authors.AuthorId 
+0

我認爲你錯過了'group by' –

+0

此外,你缺少'group_concat'中的'separator'。 – rtcherry

0

這包括GROUP BYGROUP_CONCAT

SELECT DISTINCT 
    Books.BookId, 
    Books.Title, 
    GROUP_CONCAT(Authors.AuthorName SEPARATOR ';') 
FROM Books 
    INNER JOIN BooksAuthors USING (BookId) 
    INNER JOIN Authors USING (AuthorId) 
GROUP BY Books.BookId, Books.Title 

編輯:修復SEPARATORGROUP_CONCAT。此外,這個答案假設MySQL。

+0

thx的答覆,但我忘了說,我在一個vb.net項目中使用查詢和group_concat()doens似乎不支持任何替代 – user2422053