2015-07-10 62 views
0

正在尋找加入2張桌子並保留左側的所有記錄。的問題是,的上聲明一個不存在於另一個表存在加入兩張桌子,甚至包括所有的行,甚至還有外出的匹配

表1 ID,的ClassID,日期,金額

表2 ID,CLASSID,日期,分數

實施例聲明

select 
    Table1.ID, 
    Table1.ClassID, 
    Table1.Date, 
    Table1.Amount, 
    Table2.Score 
from Table1 
left join Table2 on Table2.ID = Table1.ID 
     and Table2.ClassID = Table1.ClassID 
     and Table2.Date = Table1.Date 

存在的問題是Table1具有Table2不具有的ClassID,它將結果排除在外。如果我刪除ClassID作爲資格證書,我會得到大量重複項目

+0

使用'選擇COALESCE(Table1.ClassID,Table2.ClassID)' –

+0

是'需要table1.classId'? –

+0

這兩個表之間的PK FK約束是什麼?不只是ID或ClassID足夠了嗎? –

回答

0

對於Score,您的缺失值將爲空,因此無論您喜歡,您都必須處理該問題,但這可以完成這項工作。

select 
    Table1.ID, 
    Table1.ClassID, 
    Table1.Date, 
    Table1.Amount, 
    (SELECT Score 
    FROM Table2 
    WHERE ID = Table1.ID 
    and ClassID = Table1.ClassID 
    and Date = Table1.Date) AS 'Score' 
from Table1