2017-04-13 4 views
1

は私がから引っ張ってる4つのテーブルがあります。関連付けのないすべてのレコードを選択するにはどうすればよいですか? SQL

Company 
    ID 
    Code 
Department 
    ID 
    Name 
Cost_Center 
    ID 
    Number 
Company_Department_Cost_Center 
    CompanyID 
    DepartmentID 
    CostCetnerID 

を3つの同社、33部門、および25個のコストセンターがあります。

私は、ユーザーがCompany_Department_Cost_Centerテーブルを更新できるように、各テーブルに1つのドロップダウンを持つWebフォームを設計しています。ユーザが最初のドロップダウンから会社を選択すると、私は部門テーブルとコストセンターテーブルのデータのみを含むように2番目の2つをフィルタリングする必要があります。にはに既存の関係がありません。

したがって、ユーザーが会社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

関連する問題