首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2013-11-06 
如何多表连接,再字符串拼接?我的三个表是这么样的.... 书表books (bk_id,bk_title,bk_price,bk_publishing

如何多表连接,再字符串拼接?
我的三个表是这么样的....
 书表             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]

热点排行