2017-08-07 1 views
0

Bitte nehmen Sie sich einen Blick auf die folgende Abfrage:hinzufügen bedingter dem zweiten beitreten links

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) 

ich im Grunde mit r.up_user_id übereinstimmen a.user_id versuche und wenn es keine Übereinstimmung mit up_user_id ist, dann ENTITY_ID entsprechen . Allerdings gibt es keine Bedingung für diese Aussage, deshalb erhalte ich Dubletten, weil manchmal a.user_id = r.up_user_id aber auch a.user_id = r2.entity_id (nur für einen anderen Wert). Können Sie beim Hinzufügen einer Bedingung helfen, dass die zweite linke Verknüpfung nur auftreten sollte, wenn a.user_id <> r.up_user_id?

Antwort

1

Aber Sie haben die Antwort selbst geschrieben! Versuchen Sie, die Bedingung hinzuzufügen, dass Sie in Worten geschrieben:

and a.user_id <> r.up_user_id 

So:

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) 
+0

Lol wow .. danke! – edost4