以下のクエリは計画通りに動作しますが、参加した方法を正確に示していますが、問題はありませんが、ユーザーにとってより多くの「特殊化」テーブルがあれば、メールタイプ "またはそれ以上のユーザーが1つ以上のデータを持つことができるようにするには... "give priority"
からISNULL
経由でT-SQL左結合2回
2つの結合を使用しないでください1つの参加でTypeId 1
を超えてTypeId 2
に優先度を「与える」ことは可能ですか?
if object_id('tempdb..#Tab1') is not null drop table #Tab1
create table #Tab1 (UserId int, TypeId int)
if object_id('tempdb..#Tab2') is not null drop table #Tab2
create table #Tab2 (TypeId int, TypeDescription nvarchar(50))
insert into #Tab1 (UserId, TypeId)
values
(1, 1),
(1, 2)
insert into #Tab2 (TypeId, TypeDescription)
values
(1, 'User'),
(2, 'Admin')
select *, ISNULL(t2.TypeDescription, t3.TypeDescription) [Role]
from #Tab1 t1
LEFT JOIN #Tab2 t2 on t1.TypeId = t2.TypeId and
t2.TypeId = 2
LEFT JOIN #Tab2 t3 on t1.TypeId = t3.TypeId and
t3.TypeId = 1
'ties'でトップが存在することを...助けるためにVeljko89ハッピー@説明 – Veljko89
をありがとうさえ気づいていませんでした! – SqlZim