Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Корректность запроса к базе  [new]
32sasha
Member

Откуда:
Сообщений: 503
Не могу понять почему в строке replace(L.[tp_Title], 'Employment in ',''+'%')
пишет ошибку The column prefix 'L' does not match with a table name or alias name used in the query.
ведь такое поле есть.
Может я неправильно запрос составил
	select 
	L.[tp_Title], UserData.tp_ListId, UserData.[tp_ID] as ID_Task
	
	from [STS_projectsrv_1].[dbo].[Lists] as L,	
UserData 
	LEFT OUTER JOIN UserData AS t1 ON (UserData.[int5]=t1.[tp_ID] AND t1.tp_ListId = @L1) 
	LEFT OUTER JOIN UserData AS Theme ON (UserData.[int7]=Theme.[tp_ID] AND Theme.tp_ListId = @L2) 
	LEFT OUTER JOIN UserData AS t5 ON (UserData.[int8]=t5.[tp_ID] AND t5.tp_ListId =
			(SELECT [tp_ID] FROM [STS_projectsrv_1].[dbo].[Lists] where [tp_Title] Like N'Task in %' 
+ replace(L.[tp_Title], 'Employment in ',''+'%') ))
	
where 
		UserData.tp_ListId = l.[tp_ID] 
		and l.[tp_Title] Like N'Employment in %'


Корректность запроса к базе
24 янв 12, 14:20    [11960307]     Ответить | Цитировать Сообщить модератору
 Re: Корректность запроса к базе  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
32sasha,

Из-за запятой.
Другая область видимости (scope).
Microsoft настоятельно рекомендует не использовать одновременно старый и новый синтаксис joinов
Рекомендация простая - перестать использовать запятую во FROMе
24 янв 12, 14:24    [11960350]     Ответить | Цитировать Сообщить модератору
 Re: Корректность запроса к базе  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
SELECT 
 L.[tp_Title]
,UD.tp_ListId
,UD.[tp_ID] as ID_Task
FROM [STS_projectsrv_1].[dbo].[Lists] as L
JOIN UserData UD ON L.[tp_ID]=UD.tp_ListId
LEFT JOIN UserData AS t1 ON UD.[int5]=t1.[tp_ID] AND t1.tp_ListId=@L1
LEFT JOIN UserData AS Theme ON UD.[int7]=Theme.[tp_ID] AND Theme.tp_ListId=@L2
LEFT JOIN
 UserData AS t5
 JOIN [STS_projectsrv_1].[dbo].[Lists] L
  ON t5.tp_ListId=L.[tp_ID]
 AND L.[tp_Title] LIKE N'Task in %'+REPLACE(L.[tp_Title],'Employment in ',N'%')
ON UD.[int8]=t5.[tp_ID]
WHERE L.[tp_Title] LIKE N'Employment in %';
24 янв 12, 14:34    [11960477]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить