2012-04-13 20 views
6

Ben iki tablo aşağıda oluşturulur ve FK_TypeID bu durumda null olduğunu. Ben iki tabloları katılmak bana dönen bir sorgu yazmak istiyorum. FK_TypeID belirli bir satır için BOŞ iseİki tabloyu null olmayan yabancı anahtarla birleştirmek?

, TypeName da BOŞ olup. Böyle bir katılma bildirimi oluşturmaya nasıl başlayacağımı bilmiyorum?

[Actions] 
ActionsID 
Date 
Message 
FK_TypeID //links to the table below 

[Type] 
TypeID 
TypeName 

Bulunduğum statment şeklinde görünür ve sadece BOŞFK_TypeID satırları Yardım büyük takdir

SELECT  * 
FROM   Actions 
INNER JOIN  TypeName ON Actions.FK_TypeID = [Type].TypeID 

atlar!

cevap

19

sadece Actions bir maç Type ile kravat bulunamazsa bir LEFT JOIN

SELECT Actions.Date, Actions.Message, Type.TypeName 
FROM Actions 
    LEFT JOIN Type 
     ON Type.TypeID = Actions.FK_TypeID 

kullanmak gerekir, daha sonra Type tüm sütunlar NULL olacaktır.

Here is a good graphical visualization of the different types of joins in SQL

+0

olduğunu bir dış birleşim kullanın ?? Bir çekicilik gibi çalıştı;) teşekkür ederim! – Bonk

+0

"Cadılık" birleştirme stratejisidir. "SOL JOIN" iyi bir kullanımını gösteren Justin Pihony +1 sağ tablo null olarak kabul edilirken başvurulan ilk tablo (SOL tablo), tüm sonuçları döndürür nereye. Bu tam olarak posterin istediği şey. Aferin! –

0

bu ne biçim büyücülük

SELECT Actions.Date, Actions.Message, Type.TypeName 
FROM Actions LEFT OUTER JOIN 
      Type ON Type.TypeID = Actions.FK_TypeID 
İlgili konular