如何选择没有关联的所有记录? SQL

时间:2017-04-13 19:43:24

标签: sql

我有四张桌子可供选择:

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很好,但这个问题让我不知所措。

有关如何解决此问题的任何建议吗?

1 个答案:

答案 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
  )