Return 来自父项的所有记录 table 如果 id = 0
Return all records from parent table if id = 0
假设我有一个 table 分配 Users
作为部门经理,例如:
UserManagerTable
:
ID UserId DivisionId
1 23 1
2 45 0
当DivisionId = 0
时,表示该用户被分配为所有部门的经理 Divisions
table。
我想知道查询这个 table 到 return DivisionId's
的最佳方法,如果 DivisionId = 0
那么 return 全部 DivisionIds
来自 Divisions
table.
SELECT DivisionId FROM UserManagerTable...?
DivisionId
1
1
2
3
...
...
30
最初我以为我可以做这样的事情:
SELECT
CASE
WHEN DivisionId = 0 THEN (Select DivisionId FROM Division)
ELSE DivisionId
END AS DivisionID
FROM PoAppApprovedRequestor
但这并没有让我得到我想要的。
你的意思是这样的吗?
select d.*
from divisions d
where exists (select 1
from usermanager um
where um.id = @id and
(um.divisionid = 0 or um.divisionid = d.divisionid)
);
您可以使用如下查询
;with newUserManagerTable as
(
select ID,UserId,D.DivisionId from
from UserManagerTable U Join Divisions D
on U.DivisionId=D.DivisionId or U.DivisionId=0
)
--you query here on newUserManagerTable
假设我有一个 table 分配 Users
作为部门经理,例如:
UserManagerTable
:
ID UserId DivisionId
1 23 1
2 45 0
当DivisionId = 0
时,表示该用户被分配为所有部门的经理 Divisions
table。
我想知道查询这个 table 到 return DivisionId's
的最佳方法,如果 DivisionId = 0
那么 return 全部 DivisionIds
来自 Divisions
table.
SELECT DivisionId FROM UserManagerTable...?
DivisionId
1
1
2
3
...
...
30
最初我以为我可以做这样的事情:
SELECT
CASE
WHEN DivisionId = 0 THEN (Select DivisionId FROM Division)
ELSE DivisionId
END AS DivisionID
FROM PoAppApprovedRequestor
但这并没有让我得到我想要的。
你的意思是这样的吗?
select d.*
from divisions d
where exists (select 1
from usermanager um
where um.id = @id and
(um.divisionid = 0 or um.divisionid = d.divisionid)
);
您可以使用如下查询
;with newUserManagerTable as
(
select ID,UserId,D.DivisionId from
from UserManagerTable U Join Divisions D
on U.DivisionId=D.DivisionId or U.DivisionId=0
)
--you query here on newUserManagerTable