2013-07-07 4 views
0

У меня в настоящее время проблема с SQL Server, которую я не могу понять.SQL Server: Declare вызывает проблемы в запросе

Ошибка:

SELECT и утверждение, присваивает значение переменной не должно быть объединено с операциями данными поиска

SQL:

DECLARE @IdUser INT 

Select 
    @IdUser = Id, 
    Username, 
    (Select Count(*) From GagsLikes where Userid = @IdUser And Good = 1) as GagLikes, 
    (Select Count(*) From GagsViews where UserID = @IdUser), 
    (Select Count(*) From Gags Where UserID = @IdUser) as GagViews 
From 
    Users 
Order by 
    GagLikes, GagViews 

Спасибо заранее!

+3

Как сказано, вы не можете комбинировать этот '@IdUser = Id' и остальную часть вашего выбора. – TGlatzer

+2

Что вы даже пытаетесь сделать здесь? У вас нет предложения where, и я предполагаю, что у вас более одного пользователя. Так какое значение вы ожидаете присвоить '@ IdUser'? – Blorgbeard

+0

@Blorgbeard, он отображает всех пользователей с некоторой их информацией. Все работало, за исключением вспомогательных запросов. – Jamie

ответ

2

Вы не можете использовать эту переменную, как вы это делаете, попробуйте следующее:

Select 
    U.Id, 
    U.Username, 
    (Select Count(*) From GagsLikes where Userid = U.Id And Good = 1) as GagLikes, 
    (Select Count(*) From GagsViews where UserID = U.Id), 
    (Select Count(*) From Gags Where UserID = U.Id) as GagViews 
From 
    Users AS U 
Order by 
    GagLikes, GagViews 
+0

Спасибо, это сработало для меня! – Jamie

1

ваша таблица может возвращать более одного ряда. убедитесь, что ваша таблица возвращает только одну строку, иначе может быть t хранить несколько идентификаторов в одной переменной int.

Смежные вопросы