使用多个表时的自我联接

问题描述 投票:0回答:1

-之前-此自联接中使用的所有字段都来自相同的'Prime'表:

选择a。*,

b.column1作为column1b,

b.column2作为column2b,

b.column3作为column3b,

b.column4作为column4b,

b.column5作为column5b,

b.next_column5作为next_column5b,

b.column6 as column6b,

b.column7 as column7b,

b.column8 as column8b,-

b.column9作为column9b,

b.column10 as column10b,

案例

[当a.column5> b.column5然后然后a.column5] >>

[当b.column5>然后a.column5然后b.column5] >>

ELSE a.column5

END作为TheStart,

案例

当b.next_column5> today()和b.column8 = 0时>

然后1

其他0

以TheEnd结尾

从素数a到素数b

a.column11 = b.column11

和a.conper = b.conper

和a.condtn = b.condtn

和a.genass = b.genass

和('A_B','A_nB')中的a.column3

和b.column3 ='B'

和a.prime_sum_c> 0

按列11,列1,列2,列6,列7,列5的顺序

-之后-

[column8]字段现在来自另一个名为[OtherTable]的表

问题:为了继续使用SELF JOIN并考虑到我们现在正在处理2个不同的表,我应该如何写下新代码[OtherTable] .column8

-之前-此自联接中使用的所有字段都来自相同的'Prime'表:选择a。*,b.column1作为column1b,b.column2作为column2b,b.column3作为column3b,b.column4如column4b,b ....

您可以修改查询以使用join,如下所示:

select 
a.*,
b.column1 as column1b,
b.column2 as column2b,
b.column3 as column3b,
b.column4 as column4b,
b.column5 as column5b,
b.next_column5 as next_column5b,
b.column6 as column6b,
b.column7 as column7b,
o.column8 as column8b,          -- from OtherTable
b.column9 as column9b,
b.column10 as column10b,
CASE
   WHEN a.column5 > b.column5 THEN a.column5
   WHEN b.column5 > a.column5 THEN b.column5
   ELSE a.column5
END AS TheStart,
case 
 when b.next_column5 > today() and o.column8 = 0
 then 1
 else 0
end as TheEnd
from prime a 
inner join prime b on a.column11 = b.column11 
                     and a.conper = b.conper 
                     and a.condtn = b.condtn 
                     and a.genass = b.genass 
left join OtherTable o on <<your join condition>> -- join with OtherTable here
where a.column3 in ('A_B','A_nB')
and b.column3 = 'B' 
and a.prime_sum_c > 0
order by column11, column1, column2, column6, column7, column5
sql self-join
1个回答
0
投票

您可以修改查询以使用join,如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.