我有3个表A,B,C
表数据
ID C_Name Status
4 ABC Confirm
5 Xyz Confirm
6 CDE Pendinng
7 EFG N/A
8 BBB Confirm
9 CCC Pending
10 ASE Confirm
表B数据是
ID Name Date Amount
4 A 2014-11-01 2000
4 B 2014-11-02 3000
4 C 2014-11-20 1000
5 A 2014-10-01 2000
5 X 2014-10-10 1000
6 B 2014-03-30 3000
6 X 2014-04-01 1000
6 Z 2014-04-02 500
7 X 2014-12-01 1000
7 Y 2014-12-02 800
8 B 2014-11-15 3000
8 C 2014-11-15 1000
表C是
Name dayOfPay Pay remark
B 2014-12-17 4000 Cash
C 2014-12-14 1000 Check
X 2014-12-01 2000 Online
这是我的表格和数据如何显示所有数据。如果我选择名字' B'在表B中,其中status =在表A中确认。 我的查询是
select a.C_Name, b.Name,b.Amount,b.Date, c.dayOfPay,c.Pay,c.remark
from A a join B b on a.ID = b.ID join c c on b.Name = c.Name where b.Name = 'b' and a.Status = 'confirm'
C_Name Name Amount Date dayOfPay Pay remark
ABC B 3000 2014-11-02 2014-12-17 4000 Cash
BBB B 3000 2014-11-15 2014-12-17 4000 Cash
我如何能够在下方显示记录
C_Name Name Amount Date dayOfPay Pay remark
ABC B 3000 2014-11-02 - - -
BBB B 3000 2014-11-15 - - -
- B - - 2014-12-17 4000 Cash
我需要这种显示结果。
答案 0 :(得分:0)
使用外连接(左连接),而不是内连接(连接)。
select a.C_Name, b.Name,b.Amount,b.Date, c.dayOfPay,c.Pay,c.remark
from A a
left join B b on a.ID = b.ID
left join c c on b.Name = c.Name where b.Name = 'b' and a.Status = 'confirm'