2011-08-08 15 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が" バウンドすることができませんでした。

これを解決する方法はありますか?
私はgoogleを試しましたが、運はありません。

答えて

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

@ sql = 'select ....'が必要であることを除いて、あなたの応答はほとんどの部分で機能します。なぜなら、sql文字列が変更されたif節があるからです。 – DotNetRookie

関連する問題