Sql-Server

如何在不使用自連接的情況下從表類別中顯示 c 和 x 的類別名稱?

  • February 1, 2022

我在 sql server 2014 中工作,我需要在不使用自連接的情況下獲取類別 c 和 x。

但是,我不知道該怎麼做。

我的數據樣本

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

預期結果

顯示沒有自連接的類別 c 和 x

可以使用CROSS APPLY嗎?

SELECT
d1.categoryname AS categoryc
,d2.categoryname AS categoryx
FROM #category c
CROSS APPLY #categorydetails AS d1
CROSS APPLY #categorydetails AS d2
WHERE d1.categoryid=c.categoryc and d2.categoryid=c.categoryx;

順便說一句,在您的查詢中沒有自聯接。自我加入是當你做的時候TableA AS Ta1 Join TableA AS Ta2 on Ta1.x = Ta1.y。在您的查詢中,您只是在兩個不同欄位的類別和詳細資訊之間進行兩次連接。

引用自:https://dba.stackexchange.com/questions/306849