2017-04-13 61 views
1

我有4个表我是从拉:如何选择没有关联的所有记录? 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表的表格。当用户从第一个下拉列表中选择公司时,我需要过滤第二个以仅包含部门表和Cost_Center表中不存在存在关系的数据。

因此,如果用户选择公司1,则需要选择与公司1没有关系的所有部门,然后选择所有没有关系的成本中心。

我不知道如何解决这个问题,我可以用SQL,但是这个问题让我难以理解。

有关如何解决这个问题的任何建议?

回答

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 
) 
+0

是的!太棒了。我不知道“选择1”。感谢您的帮助,并教我一些东西! – user3691838

+0

@ user3691838乐意帮忙! – SqlZim