怎么多表连接,再字符串拼接
如何多表连接,再字符串拼接?
我的三个表是这么样的....
书表 books (bk_id,bk_title,bk_price,bk_publishing)
作者表 authors(au_id,au_name)
书和作者中间表 books_authors(ID,bk_id,au_id)
按下面的代码查询书的书名,价格,出版社,作者名字这些信息。
因为有一本书多个作者的情况,如果查的话那就一条信息变成两条信息了。只选前几条给看一下.
我想来想去也就应该字符串拼接了,不过不知道怎么拼了。 求代码....
虽然说别人说可以在前台的客户端比较容易弄,但求在SQL里怎么解决。 求代码....
------解决方案--------------------
直接执行这个看看是不是你想要的结果
我的三个表是这么样的....
书表 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('')