2013-11-14 67 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