SQL - supprimer les doublons d'une jointure gauche

Je suis de la création d'une joint la vue de deux tables, mais je suis arriver indésirables les doublons de table2.

Par exemple: table1 a plus de 9000 dossiers et j'ai besoin de l'avis résultant de contenir exactement les mêmes; table2 peut avoir plusieurs enregistrements avec le même FKID mais je ne veux retourner un enregistrement (aléatoire choisi est ok avec mon client). J'ai le code suivant qui fonctionne correctement, mais la performance est plus lent que prévu (plus de 14 secondes).

SELECT     
    OBJECTID
    , PKID
    ,(SELECT TOP (1) SUBDIVISIO
        FROM dbo.table2 AS t2
        WHERE (t1.PKID = t2.FKID)) AS ProjectName
    ,(SELECT TOP (1) ASBUILT1
        FROM dbo.table2 AS t2
        WHERE (t1.PKID = t2.FKID)) AS Asbuilt
FROM dbo.table1 AS t1

Est-il un moyen de faire quelque chose de similaire avec des jointures pour accélérer les performances?

Je suis à l'aide de SQL Server 2008 R2.

Je me suis rapproché avec le code suivant (~.5 secondes), mais Distinctes de " seulement de filtrer les enregistrements lorsque toutes les colonnes sont en double (plutôt que seulement la FKID).

SELECT
    t1.OBJECTID
    ,t1.PKID
    ,t2.ProjectName
    ,t2.Asbuilt
FROM dbo.table1 AS t1
    LEFT JOIN (SELECT
        DISTINCT FKID
        ,ProjectName
        ,Asbuilt
        FROM dbo.table2) t2
    ON t1.PKID = t2.FKID

exemples de table

table1          table2

OID, PKID       FKID, ProjectName, Asbuilt
1, id1          id1, P1, AB1
2, id2          id1, P5, AB5
3, id4          id2, P10, AB2
5, id5          id5, P4, AB4

Dans l'exemple ci-dessus enregistrements retournés doivent être id5/P4/AB4, id2/P10/AB2, et (id1/P1/AB1 OU id1/P5/AB5)

Ma recherche est venu avec des questions similaires, mais aucun qui a résolu mon problème. lien, lien

Merci d'avance pour votre aide. Ceci est mon premier post alors laissez-moi savoir si j'ai brisé toutes les règles.

  • Bienvenue sur StackOverflow. Quand vous postez une question, vous devez également inclure le moteur de base de données que vous utilisez. Si une réponse résout votre problème, alors vous devez les accepter la réponse. Vous pouvez également upvote autant de réponses que vous le souhaitez.
InformationsquelleAutor Rick Momsen | 2013-01-30