整理一个棘手的SQL查询

时间:2011-08-08 18:30:00

标签: sql-server-2008 select

我正在使用SQL 2008计算机,但似乎无法使查询正常工作 我的SQL查询是:

select q.Document DOC from references q, equiprates e where e.MachineID=q.UnitID'   

q.Document重新创建的行是:

5570_RESTAURANT.pdf  
5650_RESTAURANT.pdf  
5110_RESTAURANT.pdf 

但是,我需要表行如下:

餐厅文件

<a href="Javascript:ViewPDFDoc('5570_RESTAURANT.pdf')" class="Link">5570_RESTAURANT.pdf</a>  
<a href="Javascript:ViewPDFDoc('5650_RESTAURANT.pdf')" class="Link">5570_RESTAURANT.pdf</a>  
<a href="Javascript:ViewPDFDoc('5110_RESTAURANT.pdf')" class="Link">5570_RESTAURANT.pdf</a>  

所以我试着按如下方式格式化我的选择字符串:

Select @sSQL = 'select q.Document DOC, ''<a href="Javascript:ViewFile('''''+q.Document+''''''')" class="Link">''+q.Document+''</a>'' ''Restaurant Document'',
from references q, equiprates e 
where e.MachineID=q.UnitID'  

我的错误信息是:

  

Msg 4104,Level 16,State 1,Line 3

     

无法绑定多部分标识符“q.Document”。

有任何想法如何解决这个问题? 我试过谷歌,但没有运气。

2 个答案:

答案 0 :(得分:2)

您的单引号是错误的(我还建议转换为更现代的INNER JOIN语法)。但为什么应用程序不能简单地在DOC列周围添加HTML?似乎浪费(显然更复杂)在服务器上添加所有HTML,并通过网络发送所有这些字节。

DECLARE @sSQL NVARCHAR(MAX);

SET @sSQL = N'SELECT 
  DOC = q.Document, 
  [Restaurant Document] = ''<a href="Javascript:ViewFile('''''' 
    + q.Document + '''''');" class="Link">'' 
    + q.Document + ''</a>''
  FROM references AS q 
  INNER JOIN equiprates AS e
  ON q.UnitID = e.MachineID';

PRINT @sSQL;

答案 1 :(得分:1)

尝试

select 
  '<a href="Javascript:ViewPDFDoc(''' + q.Document + ''')" class="Link">' + q.Document + '</a>'
from
  references q, equiprates e 
where 
  e.MachineID=q.UnitID

但请记住,这是非常糟糕的编程风格。当数据模型和数据视图彼此分离时,它会更好