读书人

怎么多表连接再字符串拼接

发布时间: 2013-11-06 16:26:37 作者: rapoo

如何多表连接,再字符串拼接?
我的三个表是这么样的....
书表 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 人民出版社 张无忌




我想来想去也就应该字符串拼接了,不过不知道怎么拼了。 求代码....
虽然说别人说可以在前台的客户端比较容易弄,但求在SQL里怎么解决。 求代码....

[解决办法]
直接执行这个看看是不是你想要的结果
;
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]

读书人网 >SQL Server

热点推荐