Jointure externe gauche renvoyant plus de lignes qu'aucune jointure

Je suis perplexe par le numéro suivant. Je fais une jointure externe gauche et elle renvoie PLUS de lignes que pas de jointures du tout.

select COUNT(*) specimen_id from QuickLabDump a left outer join PracticeandPhysician c on (a.[Requesting Physician]=c.doctorfirstname+' '+c.DOCTORLASTNAME and a.[practice code]=c.practicecode) where DATEPART(mm, [DATE entered]) =12 and DATEPART(yy, [DATE entered])=2011 

rendements 108387

tandis que

 select COUNT(*) specimen_id from QuickLabDump a where DATEPART(mm, [DATE entered]) =12 and DATEPART(yy, [DATE entered])=2011 

rendements 108357

Ne devraient-ils pas returnner le même nombre exact de rangées?

La deuxième table peut avoir plus de rangées par rangée dans la table principale, c'est le point

Cela se produit lorsque la table jointe PracticeandPhysician contient plusieurs lignes pour une key dans la table QuickLabDump .

Cette requête

 select COUNT(*), c.practicecode, a.[Requesting Physician],speciment_id from QuickLabDump a left outer join PracticeandPhysician c on (a.[Requesting Physician]=c.doctorfirstname+' '+c.DOCTORLASTNAME and a.[practice code]=c.practicecode) where DATEPART(mm, [DATE entered]) =12 and DATEPART(yy, [DATE entered])=2011 GROUP BY c.practicecode, a.[Requesting Physician], speciment_id HAVING COUNT(*) > 1 

Devrait vous dire quelles lignes ont des duplicates.

Perplexe, oui, mais compréhensible.

Si vous voulez voir ce que vous obtenez de la première requête qui n'est pas dans la deuxième requête, select les loggings dans le premier resultset qui ne sont pas dans le second resultset.

Vous pouvez également essayer d'append DISTINCT à vos requêtes.

Vous avez des duplicates dans la table PractiveandPhysician .

C'est seulement si vous vous joignez à une valeur unique que vous n'aurez jamais plus d'loggings.