Окружающая среда: SQL Server 2005SELECT INTO внутри подзапроса
У меня есть этот тип запроса
SELECT *
FROM user
WHERE EXISTS(
SELECT *
FROM user_access
WHERE user_access.user_id = user.user_id
AND user_access.access IN ('HIGH_LEVEL','MEDIUM_LEVEL')
)
AND EXISTS(
SELECT *
FROM user_service
WHERE user_service.role ='Manager'
AND user.id_user = user_service.user_id
)
AND user.is_active ='True'
Но в результате я бы также хотел бы получить результат от подзапроса, так что я хотя о чем-то вроде
DECLARE @user_access TABLE(user_id int,access nvarchar(30))
DECLARE @user_service TABLE(user_id int,service_id int,role nvarchar(10))
SELECT * FROM user
WHERE EXISTS(
SELECT user_id,access INTO [@user_access]
FROM user_access
WHERE user_access.user_id = user.user_id
AND user_access.access IN ('HIGH_LEVEL','MEDIUM_LEVEL')
)
AND EXISTS(
SELECT user_id , service_id,role INTO @user_service
FROM user_service
WHERE user_service.role ='Manager'
AND user.id_user = user_service.user_id
)
AND user.is_active ='True'
SELECT * FROM @user_acess
select * from @user_service
Но я получаю следующее сообщение об ошибке:
"Неверный синтаксис рядом с ключевым словом" INTO "."
У вас есть идеи, как я могу это сделать, не делая дважды подзапрос (я пробовал с временной таблицей, той же ошибкой)?
РЕДАКТИРОВАТЬ: Извините за моего товарища, который пытался решить мою проблему, я забыл одно: у меня есть два подзапроса. См. Запросы. Я хочу:
- Все активного пользователя, с высоким или доступом к среде и которые менеджеру
- Все службы, в которых эти пользователи
- Все доступа этих пользователей
факт в том, что ваш ответ кажется правильным (вот почему я его поддержал). Но я не задал свой вопрос хорошо, потому что у меня есть 2 подзапроса (это проблема с упрощением вашего бизнеса для вопроса). Смотрите мои правки –
@remi bourgarel - Учитывая, что вы пересмотрели, я расширил свой ответ. Ответ на два подзапроса аналогичен ответу одного подзапроса. – Thomas