2016-03-23 2 views
0

次の2つの表があります。次のクエリは、両方の列に一致するビジネスIDを持つ建物のみを返します。しかし、私は、以下のクエリのWhere節に含まれるすべてのbuilding_IDを返す必要があります。 Business_IdがBusinessテーブルに存在しない場合は、BusinessテーブルにないBusiness_Idsを返し、ビジネスに[存在しない]というような名前を持つクエリが必要です。[BusinessName]列。1つの表にBuilding_ID列がない2つの表を結合するWHERE節のすべての建物IDを表示

ビルディング表

enter image description here

Select odb.Building.[Building_pk], odb.Business.[Business_pk], Business.[BusinessName] 
From odb.Building bld 
Left Join odb.Business bus 
On bld.[Business_fk] = bus.[Business_pk] 
Where bld.[Building_pk] 
IN 
(
1,2,3,4,5,6,7,8,9,10 
) Order By bld.[Building_pk] Desc 

私はこの結果セットが返されている必要があり:WHERE句にリストを想定しenter image description here

答えて

0

は、あなただけの代わりにLEFT JOINを必要とし、有効な建物がありインナージョイント:

Select bld.Business_fk, odb.Business.[Business_pk], 
     Business.[BusinessName] 
From odb.Building bld Left Join 
    odb.Business bus 
    On bld.[Business_fk] = bus.[Business_pk] 
Where bld.[Building_pk] IN (1,2,3,4,5,6,7,8,9,10) 
Order By bld.Business_fk Desc; 
+0

申し訳ありませんが、私は左結合を逃しました。ちょうどクエリを更新しました。しかし、もう一度タスクを見て、それが何かを解決していないことを確認してください。結果セットは1から6のビルディングキーのみを返し、7,8,9,10をスキップします。 – enigma6205

+0

@ enigma6205。 。 。 'SELECT'と' GROUP BY'(そして 'ORDER BY')列は、' bus'テーブルではなく、 'bld'テーブルからのものでなければなりません。 –

関連する問題