合并多对多关系连接中的列值

Ibr*_*jar 5 sql sql-server asp.net-3.5 sql-server-2008-express

我有两个表,BooksAuthors,它们之间通过名为book_authors的第三个表具有多对多关系,我试图使用内部联接列出每本书的作者的所有书籍,以便将它们显示在DataList控件,但是join 导致了几个重复的行,因为每本书可能有很多作者,所以每个作者都会有一行。
例子:

book_title           author  
b1                    a1  
b1                    a2  
Run Code Online (Sandbox Code Playgroud)

解决此问题的最佳方法是什么,使其变为:

book_title                author  
b1                        a1, a2  
Run Code Online (Sandbox Code Playgroud)

Ari*_*ion 6

也许是这样的:

SELECT
    Books.book_title,
    STUFF
    (
        (
            SELECT 
                ',' +author
            FROM
                book_authors
                JOIN Authors
                    ON book_authors.authorId=Authors.authorId
            WHERE
                book_authors.bookId=Books.bookid
            FOR XML PATH('')
        )
    ,1,1,'')
FROM
    Books
Run Code Online (Sandbox Code Playgroud)

编辑

没有你的数据很难说。这是否有效:

DECLARE @Table1 TABLE(ID INT)
DECLARE @Table2 TABLE(Name varchar(100),ID INT)

INSERT INTO @Table1 VALUES(1),(2)
INSERT INTO @Table2 VALUES('test1',1),('test2',1),('test3',2),('test4',2)

SELECT
    t1.ID,
    STUFF
    (
        (
            SELECT 
                ',' +t2.Name
            FROM
                @Table2 AS t2
            WHERE
                t1.ID=t2.ID
            FOR XML PATH('')
        )
    ,1,1,'')
FROM
    @Table1 AS t1
Run Code Online (Sandbox Code Playgroud)