Я следующий код -Неоднозначное имя столбца 'CustomerId'
declare @userType int
declare @custIdOfUser int
select
@userType = UserTypeId, @custIdOfUser = CustomerId
from
customers c with (nolock)
left outer join
Sites s with (nolock) on c.CustomerId = s.CustomerId
left outer join
customers rc on rc.CustomerId = c.ResellerId
where
c.[name] is not null
and (c.customerId is null or rc.CustomerId = c.CustomerId)
and c.IsActive != ''
and (@userType = 1 OR @userType = 2 OR
(c.customerId in ((SELECT u.CustomerId, ur.RoleId
FROM Users u
INNER JOIN UserRoles ur ON ur.UserId = u.UserId AND ur.RoleId = 39
INNER JOIN Customers c ON ur.CustomerId = c.CustomerID
WHERE u.UserId = 28 or u.UserTypeId = 3 or u.UserTypeId = 4
and c.customerId in
(SELECT c.CustomerId FROM Customers c
WHERE c.resellerId = u.CustomerId)))))
Это дает мне следующее сообщение об ошибке -
Msg 116, уровень 16, состояние 1, строка 10
только один выражение может быть указано в списке выбора, когда подзапрос не вводится с EXISTS.
Msg 207, уровень 16, состояние 1, строка 3
Недопустимое имя столбца 'UserTypeId'.
Msg 209, уровень 16, состояние 1, строка 3
Неоднозначное название столбца «CustomerId».
вы можете отформатировать свой запрос, пожалуйста? при редактировании сообщения есть панель инструментов над большой текстовой областью ... используйте кнопку '{}' и используйте пробелы для логических отступов и разрывов строк, чтобы их было легко читать/понимать ... –
У вас есть 'c. CustomerId IN .... ', но затем вы выбираете набор данных с ** двумя столбцами ** - это никогда не будет работать! Если вы хотите проверить 'c.customerId', тогда суб-запрос должен возвращать набор значений' customerId' (и ** только ** эти значения - не дополнительные столбцы!) –
Я думаю, что вы оставили хотя бы одно соединение против таблицы клиентов - серьезно, вам нужно присоединиться к клиентам в четыре раза? –