/ / Join-Abfrage mit unterschiedlichen Ergebnissen, basierend auf dem Typ der für die Verknüpfung verwendeten Tabelle / Abfrage - SQL, MS-Access

Join Query, die unterschiedliche Ergebnisse haben, basierend auf dem Typ der Tabelle / Abfrage, die für den Beitritt verwendet wird - sql, ms-access

Das verwirrt mich sehr und ich konnte keine findenGrund warum: Im Jahr 2010 Access erstelle ich 2 Join-Abfragen. Join 1: 1 Big Table Inner Joins 1 Unterabfrage für mehrere Felder auswählen. Eines der Felder ist Datum aber in Zahlenformat, d. h. 201701 Es werden 100 Datensätze zurückgegeben.

Join 2: Dieselbe große innere Tabelle verbinde dieselben Felder mit einer Tabelle. Das Der einzige Unterschied zu Join 1 besteht darin, dass die zweite Tabelle aus dem erstellt wird Abfrage von oben auswählen. Es werden über 1000 Datensätze zurückgegeben. Dies ist das Ergebnis erwarte ich.

Ich habe verschiedene Ansätze ausprobiert und festgestellt, dass das Datumsfeld verursacht die Angelegenheit. Sobald ich dieses Datumsfeld (RenewalDate) entferne, verbinden beide Abfragen gib das gleiche Ergebnis zurück.

SQL


    SELECT POLICY, Date, Val(LEGAL) AS LEGALN, REGION
INTO New_Table
FROM [TABLE_A] INNER JOIN [FILTER]
ON ([TABLE_A].NETWORK = [FILTER].NETWORK)
AND ([TABLE_A].LEGAL = [Filter].LEGAL)
AND ([TABLE_A].REGION = [Filter].REGION)
AND ([TABLE_A].AF = [Filter].AF)
AND ([TABLE_A].ML = [Filter].ML)
AND ([TABLE_A].ELGIND = [Filter].ELGIND)
AND ([TABLE_A].OI = [Filter].OI)
AND ([TABLE_A].Policy = [Filter].Policy)
AND ([TABLE_A].SEGMENT = [Filter].SEGMENT)
AND ([TABLE_A].PRODTYPE = [Filter].PRODTYPE)
AND ([TABLE_A].RenewalDATE = [Filter].RenewalDATE)
WHERE (([TABLE_A].ASFactor) Is Not Null)
AND (([TABLE_A].ProjMed)<>9.9999)
AND (([TABLE_A].Proj_R)<>9.9999)

Wenn [Filter] eine Tabelle ist, wird das obige Ergebnis korrekt angezeigt.
Wenn [Filter] eine Auswahlabfrage ist, wird sie erstelltdas falsche Ergebnis. Tabelle_A ist erheblich größer als [Filter]. Im Wesentlichen haben sie Eine Reihe von Feldern, die sich verbinden, werden im Abfrageergebnis nicht angezeigt. Nur Informationen zu Tabelle a werden angezeigt.

Kann mir bitte jemand erklären, wie das möglich ist?

Antworten:

0 für die Antwort № 1

Ihre DOB-Felder haben möglicherweise nicht genau dieselben Werte, obwohl sie anscheinend dieselben haben.

Fügen Sie anstelle eines Joins einen hinzu Woher Klausel:

Where DateValue(a.DOB) = DateValue(b.DOB)

oder:

Where DateDiff("d", a.DOB, b.DOB) = 0