打印存储在其他表中的ID的名称

时间:2017-07-30 08:44:40

标签: sql join database-design

我有两个表第一个商店ID到公司名称 公司(ID varchar2(4),CompanyName varchar2(20))

1001 - Company1
1002 - Company2
1003 - Company3
1004 - Company4

另一个表SellerBuyer存储哪个公司正在销售哪个公司 并且每个卖方或买方可以为空 e.g。

(1001,null) 1001 has no buyer
(1002,1003) 1002 is selling to 1003
(1002,1004) 1002 is selling to 1004
(1003,1004) 1003 is selling to 1004
(null,1004) 1004 is also buying from unknown seller.

请帮我处理SQL,根据表公司,SellerBuyer中存储的数据打印公司名称,如下所示

(Company1,null)
(Company2,Company3)
(Company2,Company4)
(Company3,Company4)
(null,Company4)

1 个答案:

答案 0 :(得分:0)

假设你的表是:

Company (ID, CompanyName) 
SellerBuyer(IDSeler,IDBuyer);

秘诀是将公司表视为两个单独的表,卖方卖方,买方买方,

我从SellerBuyer开始使用left join来包含空值。

此外,我还将标题SellerName和BuyerName添加到列中。

所以你的SQL应该是这样的:

select seller.companyName as SellerName, buyer.CompanyName as BuyerName  
from 
  SellerBuyer 
  left join Company as seller on SellerBuyer.IDSeler=seller.ID
  left join Company as buyer on SellerBuyer.IDBuyer=buyer.ID