2016-07-10 7 views
0

Erstens bin ich ein Neuling, also ist dies wahrscheinlich wirklich einfach. Ich habe es einfach nicht herausgefunden.SQL Server - Wie Join mehrere Tabellen in verschiedenen Datenbanken mit keine Duplikate (einfache Abfrage)

Mein Problem: Ich habe eine Tabelle, die 560782 Datenzeilen hat [dies sollte das Ergebnis sein, wenn ich fertig bin]. Wenn ich es zu einer anderen Tabelle (andere Datenbank) verbinde, um den provname zu bekommen, bekomme ich 582634 Zeilen. Ich weiß, das ist, weil es manchmal zwei Einträge für denselben Provid gibt. Ich brauche nur die einzige Instanz für den Provid. Das größere Problem tritt auf, wenn ich die dritte Tabelle aus einer anderen Datenbank hinzufüge. Ich weiß ehrlich nicht, wie viele Zeilen es zurück gibt, weil ich es nach ungefähr 20 Minuten stoppen musste. Ich bin mir ziemlich sicher, dass es 580782x582634 dupliziert. Ich glaube, es gibt eine Möglichkeit, DISTINCT zu helfen, aber ich bin nicht sicher, wo/wie.

/* add prov name and plan name to data set for analysis */ 
SELECT 
    a.pcp_id, a.HMO_ID, a.MEM_MONTH, a.MEM_YEAR, a.patient_id, 
    b.prov_name, b.org_name, b.serv_area_name, a.PLAN_NUMBER, 
    c.PLAN_TYPE_NAME 
FROM 
    IDA.dbo.ida_Mem_Mo a 
INNER JOIN 
    AMG.dbo.tbl_AMG_PROV b ON a.pcp_id = b.prov_id 
LEFT JOIN 
    IDX.dbo.IDX_ENROLL c ON a.PLAN_NUMBER = c.PLAN_NUMBER 
WHERE 
    a.HMO_ID = 6 
    AND (a.MEM_DATE > CONVERT(DATETIME, '2014-12-31 00:00:00', 102)) 

Antwort

0

Ich habe eine Tabelle, die 560.782 Datenzeilen hat [dies sollte das Ergebnis sein, wenn ich fertig bin]. Wenn ich es zu einer anderen Tabelle (verschiedene Datenbank), um den Provname zu bekommen, bekomme ich 582634 Zeilen. Ich weiß, dass das ist, weil es manchmal zwei Einträge für das gleiche provid gibt. Ich NUR brauche die einzelne Instanz für den Provid.

zu handhaben, dass Sie unterschiedliche Werte von prov_id innerhalb einer Unterabfrage erhalten müssen (werden nur, wenn diese Tabelle AMG.dbo.tbl_AMG_PROV hat eine einzigartige prov_id für jede Kombination von prov_name, org_name, serv_area_name

SELECT a.pcp_id, a.HMO_ID, a.MEM_MONTH, a.MEM_YEAR, a.patient_id, ..... 
FROM IDA.dbo.ida_Mem_Mo a 
inner join 
(
select distinct prov_id, prov_name, org_name, serv_area_name from 
AMG.dbo.tbl_AMG_PROV b ON a.pcp_id=b.prov_id 
) b ON a.pcp_id=b.prov_id 
arbeiten

in ähnlicher Weise für die andere Tabelle IDX.dbo.IDX_ENROLL

, aber ich brauche das Schema und die Beziehung zu wissen, dass Sie weiter in der Lage sein

+0

In der AMG-Tabelle zu helfen, die prov_name, erscheint einige Male TWIC e; gleiche physikalische Adresse prov_id (alles andere ist gleich). Ich bin mir nicht sicher, was Sie mit dem Schema meinen? Es tut uns leid. Das ist alles sehr neu für mich. – Nikki

+0

das ist der Grund, warum du Duplikate bekommst ... also wenn einige prov_id mehr als 1 Einträge haben, welche willst du auswählen? Wir müssen die Regel kennen. Manchmal können wir das anhand des Tabellenlayouts (Schema) herausfinden. Klicken Sie mit der rechten Maustaste auf die Tabellenauswahl-Skripttabelle als -> Erstellen nach -> Datei. Speichern und kopieren/fügen Sie das in Ihrem Hauptbeitrag ein, indem Sie es bearbeiten und formatieren. Sie sollten auch einige Beispieldaten für relevante Spalten veröffentlichen. Und erklärt die Regeln. Andererseits wird es sehr schwierig sein, zu helfen. – objectNotFound

+0

ok. Ich bin jetzt nicht im Büro. Ich werde das tun, wenn ich morgen zurück bin. Es spielt wirklich keine Rolle, welche Zeile gewählt wird, da es sich um denselben Anbieter handelt. – Nikki