/ / Dodaj warunkowe do drugiego lewego łączenia - sql-server

Dodaj warunkowe do drugiego lewego sprzężenia - serwer sql

Proszę spojrzeć na następujące zapytanie:

SELECT distinct a.*, coalesce (r.email,r2.email) as "sign_in_email"
into #adobe_prep
FROM dbo.adobe
left join
dbo.registration r ON (a.user_id = r.up_user_id)
left join
dbo.registration r2 ON (a.user_id = r2.entity_id)

Zasadniczo próbuję dopasować a.user_id do r.up_user_id i jeśli nie ma dopasowania z up_user_id, wtedy dopasuj entity_id. Jednak nie ma warunku na tym oświadczeniu, więc otrzymuję duplikaty, ponieważ czasami a.user_id = r.up_user_id, ale także a.user_id = r2.entity_id (tylko dla innej wartości). Czy możesz pomóc w dodaniu warunku, że drugie lewe dołączenie powinno wystąpić tylko wtedy, gdy a.user_id <> r.up_user_id?

Odpowiedzi:

1 dla odpowiedzi № 1

Ale sam napisałeś odpowiedź! Spróbuj dodać warunek, który napisałeś słowami:

and a.user_id <> r.up_user_id

Lubię to:

select distinct a.*, coalesce (r.email,r2.email) as "sign_in_email"
into #adobe_prep
from dbo.adobe
left join dbo.registration r ON (a.user_id = r.up_user_id)
left join dbo.registration r2 ON (a.user_id = r2.entity_id and a.user_id <> r.up_user_id)