Simulieren eines vollständigen Outer Joins in Microsoft Access
Microsoft Access unterstützt vollständige äußere Verknüpfungen nicht direkt. Sie können jedoch das gleiche Ergebnis erzielen, indem Sie linke und rechte Verknüpfungen mit dem Operator UNION
kombinieren. Ein vollständiger äußerer Join gibt alle Zeilen aus beiden Tabellen zurück, unabhängig davon, ob in der anderen Tabelle eine Übereinstimmung vorliegt oder nicht. So erreichen Sie dies:
Der Ansatz:
Linker Join und rechter Join: Führen Sie zunächst einen linken Join (Rückgabe aller Zeilen aus der linken Tabelle AA
und übereinstimmender Zeilen aus der rechten Tabelle BB
) und einen separaten rechten aus Join (gibt alle Zeilen von BB
und übereinstimmende Zeilen von AA
zurück).
UNION All: Kombinieren Sie die Ergebnisse der linken und rechten Verknüpfungen mit UNION ALL
. Dadurch werden die beiden Ergebnismengen verkettet. Durch die Verwendung von UNION ALL
werden doppelte Zeilen beibehalten, sofern vorhanden. UNION
entfernt Duplikate.
Bekämpfung potenzieller Duplikate: Wenn Sie die Eindeutigkeit sicherstellen müssen, benötigen Sie möglicherweise eine zusätzliche Filterung nach dem UNION ALL
.
Beispielabfrage:
In Anlehnung an das bereitgestellte Beispiel wäre ein vollständiges Outer-Join-Äquivalent in Access:
<code class="language-sql">SELECT * FROM AA LEFT JOIN BB ON AA.C_ID = BB.C_ID UNION ALL SELECT * FROM AA RIGHT JOIN BB ON AA.C_ID = BB.C_ID;</code>
Diese Abfrage führt effektiv die Ergebnisse eines linken und rechten Joins zusammen, sodass Sie einen vollständigen Outer-Join-Effekt erhalten.
Optimierte Abfrage (für große Datensätze):
Für eine bessere Leistung bei größeren Datensätzen wird ein verfeinerterer Ansatz empfohlen:
<code class="language-sql">SELECT * FROM AA INNER JOIN BB ON AA.C_ID = BB.C_ID UNION ALL SELECT AA.*, NULL AS [BB fields] -- List BB fields explicitly as NULL FROM AA LEFT JOIN BB ON AA.C_ID = BB.C_ID WHERE BB.C_ID IS NULL UNION ALL SELECT NULL AS [AA fields], BB.* -- List AA fields explicitly as NULL FROM AA RIGHT JOIN BB ON AA.C_ID = BB.C_ID WHERE AA.C_ID IS NULL;</code>
Diese Version verarbeitet explizit Nullwerte für Felder aus der nicht übereinstimmenden Tabelle und verbessert so die Übersichtlichkeit und möglicherweise die Leistung. Denken Sie daran, [AA fields]
und [BB fields]
durch die tatsächlichen Feldnamen aus den Tabellen AA bzw. BB zu ersetzen.
Diese Methode simuliert effektiv einen vollständigen Outer-Join in Microsoft Access und liefert das gewünschte Ergebnis, während gleichzeitig Auswirkungen auf die Leistung für größere Datensätze berücksichtigt werden.
Das obige ist der detaillierte Inhalt vonWie kann ich in Microsoft Access einen vollständigen Outer Join durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!