比较表中的相同列值,然后从其他表中获取它们的关系值

时间:2017-04-29 17:06:24

标签: sql join

我有一张如下表:

ID  Role  CompanyID
1   T     123
2   S     1234
3   B     12345

T&#39>公司ID与S&B公司ID有关系。他们之间关系的价值在下面的另一个表中:

Rel      CompanyId1    CompanyId
Private  1234          123
Public   12345         123

当然首先我必须加入这两个表,然后我必须从表2中得到T(123)与S(1234)和B(12345)的关系,并根据我必须创建如果T与S和B的关系是私有的那么将是另一列,然后是1,如果是公共然后是0

应该是这样的

Id     Role   Companyid   BoolCol
1      T      123         for T there is no need to fill this col can be null
2      S      1234        1 becoz rel b/w T and S is private
3      B      12345       0 becoz rel b/w T and B is public

与其他公司的关系只与T有关,而不是相反

任何帮助将不胜感激.......

由于

2 个答案:

答案 0 :(得分:0)

你可以试试这段代码:

select id, role,a.companyid,rel,case when rel='Private' then 1 when rel='Public' then 0 else null end as boolcol
from first_table a left join relation_table b
on a.companid=b.companyid1

答案 1 :(得分:0)

您可以使用第一个表中的CompanyId上的左连接和第二个表中的CompanyId1加入表格,并使用 case 语句来获取BoolCol列。

select a.*,case when b.rel = 'Private' then 1
                when b.rel = 'Public' then 0   
                else NULL 
                end as BoolCol
from table1 a
left join
table2 b
on a.companyid = b.companyid1;  

如果您有任何疑问,请与我联系。