我有四张桌子可供选择:
Company
ID
Code
Department
ID
Name
Cost_Center
ID
Number
Company_Department_Cost_Center
CompanyID
DepartmentID
CostCetnerID
共有3个公司,33个部门和25个成本中心。
我正在设计一个带有下拉列表的Web表单,每个表一个,允许用户更新Company_Department_Cost_Center表。当用户从第一个下拉列表中选择公司时,我需要过滤后两个以仅包含Department表中的数据和不具有现有关系的Cost_Center表。
因此,如果用户选择公司1,我需要选择与公司1没有关系的所有部门,以及随后所有没有关系的成本中心。
我不知道如何处理这个问题,我对SQL很好,但这个问题让我不知所措。
有关如何解决此问题的任何建议吗?
答案 0 :(得分:0)
使用not exists()
,@CompanyId
代表您的参数。
select d.*
from Department d
where not exists (
select 1
from Company_Department_Cost_Center cdcc
where cdcc.CompanyId = @CompanyId
and cdcc.DepartmentId = d.Id
)
对于Cost_Center
select cc.*
from Cost_Center cc
where not exists (
select 1
from Company_Department_Cost_Center cdcc
where cdcc.CompanyId = @CompanyId
and cdcc.DepartmentId = @DepartmentId
and cdcc.CostCenterId = cc.Id
)