2017-04-13 86 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