如何多表连接,再字符串拼接?
我的三个表是这么样的....
书表 books (bk_id,bk_title,bk_price,bk_publishing)
作者表 authors(au_id,au_name)
书和作者中间表 books_authors(ID,bk_id,au_id)
按下面的代码查询书的书名,价格,出版社,作者名字这些信息。
因为有一本书多个作者的情况,如果查的话那就一条信息变成两条信息了。只选前几条给看一下.
SELECT bk.bk_id,bk.bk_title,bk.bk_price,bk.bk_publishing,au.au_name
FROM dbo.Books bk INNER JOIN books_authors ba ON bk.bk_id=ba.bk_id
INNER JOIN dbo.authors au ON ba.au_id = au.au_id
bk_id bk_title bk_price bk_publishing au_name
1数据库 50.00 铁道出版 曾伟
1数据库 50.00 铁道出版 刘城
2语文 40.00 人民出版社 人民
3倚天屠龙记 43.00 人民出版社 金庸
3倚天屠龙记 43.00 人民出版社 张无忌
;
WITH huang
AS ( SELECT bk.bk_id ,
bk.bk_title ,
bk.bk_price ,
bk.bk_publishing ,
au.au_name
FROM dbo.Books bk
INNER JOIN books_authors ba ON bk.bk_id = ba.bk_id
INNER JOIN dbo.authors au ON ba.au_id = au.au_id
)
SELECT a.[bk_id] ,
a.[bk_title] ,
a.[bk_price] ,
a.[bk_publishing] ,
STUFF(( SELECT ',' + au_name
FROM [huang] b
WHERE b.[bk_id] = a.[bk_id]
AND b.[bk_title] = a.[bk_title]
AND a.[bk_price] = b.[bk_price]
AND a.[bk_publishing] = b.[bk_publishing]
FOR
XML PATH('')
), 1, 1, '') 'au_name'
FROM [huang] a
GROUP BY a.[bk_id] ,
a.[bk_title] ,
a.[bk_price] ,
a.[bk_publishing]