2016-05-10 19 views
1

この例では、別のテーブルにエントリを持たない値のリスト(この場合は会社名)を返そうとしています(この場合は請求書を意味します)。つまり、私は請求書のない企業のリストを返そうとしています。ここに私のコードは次のとおりです。あるテーブルから別のテーブルにエントリがない戻り値?

Select CompanyName From tblCompany join tblInvoice ON tblCompany.CompanyID = tblInvoice.CompanyID Where tblCompany.CompanyID NOT IN (Select CompanyID From tblInvoice)

私が取得しようとしているこれは何されています。私は、コードを実行したときしかし、何の値が表示されなかっ

Desired Results

。なぜ誰かが私に言うことができますか?

+0

joinステートメントを削除します。 – ZLK

+0

OMG、私はそのようなばかだと思う。それはプログラミングの私のアキレス腱、マイナーなものです。ありがとう! – sodhosdh

答えて

1

を使用して、ヌルに参加してフィルタを左:

select CompanyName 
from tblCompany 
left join tblInvoice on tblCompany.CompanyID = tblInvoice.CompanyID 
where tblInvoice.CompanyID is null 

逃したが、結合テーブルの値のNULLを返す加入ので、これは動作します。

+2

ここでは 'distinct'は必要ありません。 'CompanyName'は' tblCompany'で一意であるという条件で重複はありません。 –

+0

@Alex私は、欠落した結合がちょうど1列を得るのを忘れていたとは思えません。ドー! – Bohemian

1

CompanyIDtblInvoiceに存在していないtblCompanyからすべてのCompanyNameを取得する。すなわち、この

Select CompanyName 
From tblCompany 
Where tblCompany.CompanyID NOT IN  
    ( Select CompanyID 
     From tblInvoice) 

を試してみてください。

それとも、1未満に試すことができ、

select CompanyName 
from tblCompany 
left join tblInvoice on tblCompany.CompanyID = tblInvoice.CompanyID 
where tblInvoice.CompanyID is null 
0

希望の結果を得るには、次のクエリを使用します。

Select CompanyName 
From tblCompany 
left join tblInvoice 
ON tblCompany.CompanyID = tblInvoice.CompanyID 
Where tblInvoice.CompanyID IS NULL 
関連する問題