it-swarm.com.de

Vollständige äußere Teilnahme an MS Access

Ich habe zwei Mitarbeiterlisten:

List A:

StaffID   Supervisor
====================
0001234         NULL
0001235      0001234
0001237      0001234
0001239      0001237

und

List B:

StaffID   Supervisor
====================
0001234         NULL
0001235      0001234
0001238      0001235
0001239      0001235

Und ich brauche folgende Ausgabe:

StaffID   SupervisorA   SupervisorB
===================================
0001234          NULL          NULL
0001235       0001234       0001234
0001237       0001234          NULL
0001238          NULL       0001235
0001239       0001237       0001235

Beachten Sie, dass die Personal-IDs aus Liste A und Liste B zu einer einzigen, sich nicht wiederholenden Liste zusammengeführt wurden und dass ich die beiden Supervisor-Details zusammengeführt habe, die möglicherweise nicht zwischen den beiden Listen übereinstimmen.

Abfrage muss nicht nett sein. Ich habe ~ 8000 Datensätze in jeder Liste und ich werde es schön ausführen. Gerne führe ich bei Bedarf kleinere Excel-Manipulationen durch.

Ich wollte einen vollständigen Join ausführen, aber im Fenster mit den Eigenschaften des Access-Abfrage-Designers für den Join kann ich ALL aus Tabelle A auswählen und aus Tabelle B abgleichen, ALL aus Tabelle B und Match aus Tabelle A oder nur diejenigen, die in beiden A übereinstimmen und B.

Ich bin mir sicher, dass dies sehr einfach ist, aber ich verwende MS Access sehr selten.

Bisher habe ich zwei Fragen, die mir nicht das geben, was ich will. Ich wollte sie in der vollständigen äußeren Verknüpfung kombinieren, da Access mir keine Option bietet, aber nicht sicher ist, wie:

SELECT ListA.*, ListB.*
FROM ListA LEFT JOIN ListB ON ListA.[StaffID] = ListB.StaffID;

und

SELECT ListA.*, ListB.*
FROM ListB LEFT JOIN ListA ON ListB.[StaffID] = ListA.StaffID;
11
Ozzah

Das letzte Mal, dass ich mit Access gespielt habe, war, als 2003 das heiße neue Ding war, daher ist dies möglicherweise nicht bis ins kleinste Detail genau. Sie müssen jedoch zum Abfrage-Designer gehen, die Ansicht in "SQL" (d. H. Rohexteingabe) ändern und dann Ihre beiden Links-Join-Abfragen zusammen UNION, z.

SELECT ListA.*, ListB.*
FROM ListA LEFT JOIN ListB ON ListA.[StaffID] = ListB.StaffID
UNION
SELECT ListA.*, ListB.*
FROM ListB LEFT JOIN ListA ON ListB.[StaffID] = ListA.StaffID
10
Simon Righarts
SELECT S.StaffId
     , ListA.Supervisor AS SupervisorA 
     , ListB.Supervisor AS SupervisorB
FROM 
    ( SELECT StaffID
      FROM ListA 
    UNION 
      SELECT StaffID
      FROM ListB
    ) AS S
  LEFT JOIN ListA 
    ON ListA.StaffID = S.StaffID
  LEFT JOIN ListB 
    ON ListB.StaffID = S.StaffID
1
ypercubeᵀᴹ
SELECT ListA.staffID, ListA.Supervisor, ListB.Supervisor
FROM ListA LEFT JOIN ListB ON ListA.staffID = ListB.staffID
WHERE (((ListB.staffID) Is Null))
UNION
SELECT ListB.staffID, ListA.Supervisor, ListB.Supervisor
FROM ListA RIGHT JOIN ListB ON ListA.staffID = ListB.staffID
WHERE (((ListA.staffID) Is Null))
UNION
SELECT ListA.staffID, ListA.Supervisor, ListB.Supervisor
FROM ListA INNER JOIN ListB ON ListA.staffID = ListB.staffID
0
Manh Hung

Haben Sie versucht, die Abfrage im SQL-Modus zu entwerfen, anstatt die Designeransicht zu verwenden?

Wenn Sie Access 2003/XP/2000/97 verwenden, sehen Sie sich Folgendes an: http://www.techonthenet.com/access/queries/view_sql.php

Wenn Sie Access 2007/2010 verwenden, können Sie dies tun, indem Sie auf den Pfeil auf der Schaltfläche Ansicht links neben der Multifunktionsleiste klicken. Klicken Sie dann auf SQL-Ansicht.

0
Matty Bear
SELECT ListA.*, ListB.*
FROM ListA LEFT JOIN ListB ON ListA.[StaffID] = ListB.[StaffID]
UNION
SELECT ListA.*, ListB.*
FROM ListA RIGHT JOIN ListB ON ListA.[StaffID] = ListB.[StaffID];
0
onedaywhen