Ibr*_*jar 5 sql sql-server asp.net-3.5 sql-server-2008-express
我有两个表,Books和Authors,它们之间通过名为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)
也许是这样的:
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)
| 归档时间: |
|
| 查看次数: |
1275 次 |
| 最近记录: |