#sql #sql-server #select #stored-procedures
#sql #sql-сервер #выберите #хранимые процедуры
Вопрос:
Я использую следующие вложенные выборки как часть более крупного запроса.
Есть ли способ объединить их оба в один, чтобы мне не приходилось запускать два отдельных запроса?
// ...
R.requester,
(
SELECT A.Email AS requesterEmail
FROM LogTable A
WHERE A.NTID = R.requester
FOR XML PATH(''), ELEMENTS, TYPE
),
R.approver,
(
SELECT B.Email AS approverEmail
FROM LogTable B
WHERE B.NTID = R.approver
FOR XML PATH(''), ELEMENTS, TYPE
),
// ...
Комментарии:
1. Вы можете увидеть прямо здесь, надеюсь, вы сможете помочь dba.stackexchange.com/questions/47861 /…
Ответ №1:
SELECT A.Email AS requesterEmail,B.Email AS approverEmail
FROM LogTable B
JOIN LogTable A
ON B.NTID = R.approver AND A.NTID = R.requester
FOR XML PATH(''), ELEMENTS, TYPE
Комментарии:
1. Это оказалось именно тем, что мне было нужно — отлично работает! Большое спасибо за это!
Ответ №2:
Если запросы возвращают одни и те же данные, вы можете ОБЪЕДИНИТЬ ВСЕ
SELECT A.Email AS requesterEmail
FROM LogTable A
WHERE A.NTID = R.requester
FOR XML PATH(''), ELEMENTS, TYPE
union all
(
SELECT B.Email AS approverEmail
FROM LogTable B
WHERE B.NTID = R.approver
FOR XML PATH(''), ELEMENTS, TYPE
)
Комментарии:
1. Спасибо за это! К сожалению, оказалось, что это не работает для меня, поскольку я не могу использовать строки FOR в этом случае.
2. Поэтому вам лучше использовать решение от Mihai