Sql 如何合并具有条件的多个表
我有3张桌子A、B、C 表A数据为:Sql 如何合并具有条件的多个表,sql,asp.net,sql-server,sql-server-2008,Sql,Asp.net,Sql Server,Sql Server 2008,我有3张桌子A、B、C 表A数据为: 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
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”,其中状态=在表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
我需要显示此类型的结果。使用外部联接左联接,而不是内部联接
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'
你需要一个左连接。联接被分类为内部联接,只检索匹配的记录。因此,请尝试完全联接,而不是左联接。。我真的不知道你需要什么。顺便说一句,当我查看您的表时,使用join或left join时,结果可能不一样,因此,可能您做错了什么: