如何将多个表与条件合并

时间:2014-12-03 14:48:29

标签: sql asp.net sql-server sql-server-2008

我有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

我需要这种显示结果。

1 个答案:

答案 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'