2011-08-08 48 views
1

我正在SQL 2008計算機上,似乎無法看到工作。
我的SQL查詢:放在一起棘手的SQL查詢

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

通過q.Document retruned該行是:

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> 

所以我想格式化我的selecct字符串爲foll OWS:

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' 

我的錯誤信息是:

消息4104,級別16,狀態1,行3

多部分標識符 「q.Document」 不能被約束。

任何想法如何解決這個問題?
我試過谷歌,但沒有運氣。

回答

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

嘗試只

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

但請記住,這是非常不好的編程風格。當數據模型和數據視圖彼此分開時更好一些

+0

您的回答大部分工作,除了我需要@sSQL ='select ....'以及因爲有一個if子句,其中sql字符串被修改.... – DotNetRookie