/ / Aggiungi condizionale al secondo membro di sinistra - sql-server

Aggiungi condizionale al secondo membro di sinistra - sql-server

Si prega di dare un'occhiata alla seguente query:

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)

In pratica sto cercando di abbinare a.user_id con r.up_user_id e se non vi è alcuna corrispondenza con up_user_id, quindi corrisponde a entity_id. Tuttavia, non c'è alcun condizionale su questa affermazione, quindi ricevo i duplicati perché talvolta a.user_id = r.up_user_id ma anche a.user_id = r2.entity_id (solo per un valore diverso). Puoi aiutare con l'aggiunta di un condizionale che il secondo join di sinistra debba verificarsi solo se a.user_id <> r.up_user_id?

risposte:

1 per risposta № 1

Ma tu hai scritto la risposta da solo! Prova ad aggiungere la condizione che hai scritto a parole:

and a.user_id <> r.up_user_id

Come questo:

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)