Я хотел бы использовать с оператором дважды.
WITH userChild AS
(
WITH deptChild AS
(
SELECT dept_no, parent_dept_no, name
FROM [dbo].[tb_dept] D WITH(NOLOCK)
WHERE parent_dept_no = 2
AND D.company_no = 1
UNION ALL
SELECT D.dept_no, D.parent_dept_no, D.name
FROM [dbo].[tb_dept] D WITH(NOLOCK)
INNER JOIN deptChild
ON D.parent_dept_no = deptChild.dept_no
WHERE D.company_no = 1
)
SELECT user_no
FROM [dbo].[tb_dept_user] WITH(ROWLOCK)
WHERE dept_no IN (SELECT dept_no FROM deptChild)
)
SELECT *
FROM [dbo].[tb_user] U WITH(NOLOCK)
WHERE user_no IN (SELECT user_no FROM userChild)
Это мой код для этого. Внутренний оператор WITH
выбирает user_no
из всех depts
, найденных в deptChild
. Таблица tb_user не имеет столбца dept_no
. Итак, со всеми user_no
, найденными из deptChild
, я бы хотел выбрать все столбцы этой user_no
из tb_user
таблиц. Как мне это сделать?