Eu trabalho no sql server 2014 eu preciso pegar as categorias c e x sem usar o self join.
Mas, não sei como fazer isso.
Minha amostra de dados
create table #category
(
categoryc int,
categoryx int
)
insert into #category(categoryc,categoryx)
values
(19,20),
(50,75),
(80,70)
create table #categorydetails
(
categoryid int,
categoryname nvarchar(300)
)
insert into #categorydetails(categoryid,categoryname)
values
(19,'bmw'),
(20,'mercedees'),
(50,'feat'),
(75,'toyota'),
(80,'mazda'),
(70,'suzoky')
select d1.categoryname as categoryc, d2.categoryname as categoryx
from #category c
left join #categorydetails d1 on d1.categoryid=c.categoryc
left join #categorydetails d2 on d2.categoryid=c.categoryx
resultado esperado
Poderia ser feito usando
CROSS APPLY
?A propósito, em sua consulta não há auto-junção. Auto-junção é quando você faz
TableA AS Ta1 Join TableA AS Ta2 on Ta1.x = Ta1.y
. Em sua consulta, você está simplesmente fazendo duas associações entre categoria e detalhes em dois campos diferentes.