2013-11-14 66 views
0

我有一個看起來像這樣也選擇空值

用戶

id 
name 

貸款兩個表

id 
borrower_id 
lender_id 
amt 

,我需要選擇全部貸款,符合自己的名字的選擇,所以對於以下數據

用戶

id, name 
1, mark 
2, james 

貸款

id, lender_id, borrower_id, amt 
1, 1,   2,   100 
2, 2,   1,   150 
3, NULL,  1,   500 
4, NULL,  2,   300 

空在哪裏貸款人沒有reponded的情況。輸出應該是

loan_id, lender, borrower, amt 
1,  mark, James, 100 
2,  James, mark, 100 
3,  --,  mark, 100 
4,  --,  mark, 100 

這就是我試圖

Select 
    loans.amt As amt, 
    borrower.name As borrower, 
    lender.name As lender, 
    loans.id AS loan_id 
From 
    (users borrower Join 
    loans On borrower.id = loans.borrower_id) Join 
    users lender On lender.id = loans.lender_id 
+0

什麼是您的問題? – Luv

+1

LEFT JOIN將從主表中返回來自連接表的NULL值的所有條目。你應該對每個有自己的「JOIN ... ON」語句的連接表使用更詳細的樣式,使生活變得更容易。 – ToBe

+0

我不明白結果集與數據集的關係如何。 – Strawberry

回答

1

您需要LEFT JOIN包括行,其中只有一個表有符合標準的行。

試試這個:

Select 
    loans.amt As amt, 
    borrower.name As borrower, 
    lender.name As lender, 
    loans.id AS loan_id 
From 
    loans 
    LEFT JOIN users AS borrower ON loans.borrower_id = borrower.id 
    LEFT JOIN users AS lender ON loans.lender_id = lender.id 
0

在Oracle中,而不是使用左連接,您可以用(+)符號。

例如,

選擇不同 l.id如loan_id, u1.name如貸方, u2.name作爲借方, l.amt從用戶U1,U2的用戶,貸款升AMT 其中 u1.id(+)= l.lender_id和 u2.id(+)= l.borrower_id