Inner join dans SQL renvoie des lignes en double

J'ai 3 tables:

       Person                        TeamMember                     Provider

 PersonId   PersonName   PersonId   ProviderId    IsLead     ProviderId   ProviderName
---------   ----------   --------  ------------  --------   ------------  --------
  P1         ABC            P1         PR1          Yes          PR1       Provider1
  P2         PQR            P1         PR2          No           PR2       Provider2
                            P1         PR3          No           PR3       Provider3
                          -------------------------------
                            P2         PR1          No
                            P2         PR2          No
                            P2         PR3          No

Et j'ai besoin de la sortie (correspondant à PersonId et IsLead = 'Oui'):

PersonId  PersonName ProviderName
--------- ---------- ------------
  P1       ABC         Provider1
  P2       PQR         NULL

Je suis aide-dessous inner join sur le dessus de 3 tables mais je m obtenir des doublons de lignes dans le résultat.

  SELECT        P.PersonID, P.PersonName, 
         CASE WHEN TM.IsLead = 'Yes' THEN Pr.ProviderName
              WHEN TM.IsLead = 'No'  THEN NULL END AS ProviderName

  FROM            Person P INNER JOIN TeamMember TM ON P.PersonID = TM.PersonID 
                           INNER JOIN Provider PR ON Pr.ProviderId = TM.ProviderId

J'ai essayé d'utiliser distinctes, mais même cela n'a pas aide.

Toute aide serait grandement appréciée!

Vous êtes en train de faire un "arbre" de jointure. une racine de la table de rejoindre à deux distinctes à l'aide de différentes conditions. Vous obtenez le comportement attendu. Si joint Une table a 4 enregistrements correspondants, et rejoint la table B a 8, vous allez obtenir 8 rangées de dossiers, où 4 d'entre eux ont des valeurs null pour les enregistrements. par exemple, vous obtiendrez toujours autant d'enregistrements que nécessaire pour gérer tous les enregistrements correspondants de la max(appariées) tableau.

OriginalL'auteur Maltesh | 2014-05-26