0

我有以下查询:

DECLARE @AccString varchar(max)
SET @AccString=''


SELECT @Acctring=@AccString + description + '  [   ]    ' 
FROM tl_sb_accessoryInventory ai
JOIN tl_sb_accessory a on a.accessoryID = ai.accessoryID
WHERE userID=6 

SELECT userID, serviceTag, model, @AccString AS ACCESSORIES FROM tl_sb_oldLaptop ol
JOIN tl_sb_laptopType lt ON ol.laptopTypeID = lt.laptopTypeID
WHERE userID=6

输出这个:

在此处输入图像描述

我想要做的是为表 tl_sb_user 中的每个用户 ID 运行它。

获取用户 ID 的语句是:

Select userID from tl_sb_user

我怎样才能让它为每个用户输出如上所述的一行?

4

2 回答 2

3

您正在尝试执行字符串连接子查询。在 SQL Server 中,您需要使用带有for xml path. 奥术,但它通常有效。

结果是这样的:

SELECT userID, serviceTag, model, @AccString AS ACCESSORIES,
       stuff((select  '  [   ]    ' + description
              from tl_sb_accessoryInventory ai join
                   tl_sb_accessory a
                   on a.accessoryID = ai.accessoryID
              where a.userId = ol.UserId
              for xml path ('')
             ), 1, 11, '') as accessories
FROM tl_sb_oldLaptop ol JOIN
     tl_sb_laptopType lt
     ON ol.laptopTypeID = lt.laptopTypeID;

您没有表别名来标识列的来源,所以我只是猜测a.userId = ol.UserId引用了正确的表。

此外,这会将某些字符替换为 html 表单。值得注意的是'<'and'>'变成了'&lt;'and之类的东西'&gt;'。当我遇到这个问题时,我使用replace()替换值。

于 2013-07-18T13:20:07.923 回答
0

只需省略该WHERE子句。

于 2013-07-18T13:06:06.283 回答