Составление сложного запроса SQL - PullRequest
1 голос
/ 08 августа 2011

Я работаю на машине с 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'  

Мое сообщение об ошибке:

Сообщение 4104, Уровень 16, Состояние 1, Строка 3

Не удалось связать многоэлементный идентификатор "q.Document".

Есть идеи, как решить эту проблему?
Я попробовал Google, но не повезло.

Ответы [ 2 ]

2 голосов
/ 08 августа 2011

Ваши одинарные кавычки просто неверны (я также рекомендую перейти на более современный синтаксис INNER JOIN). Но почему приложение не может просто добавить HTML вокруг столбца DOC? Кажется, расточительно (не говоря уже о более сложных, очевидно) добавить весь этот 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 голос
/ 08 августа 2011

попробуйте просто

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

, но помните, это очень плохой стиль программирования.лучше, когда модель данных и представление данных отделены друг от друга

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...