Wie wird ein LEFT JOIN in MS Access ohne Duplikate?
Ich habe 2 Tabellen mit duplizierten Werte in einer der Spalten. Ich möchte gerne einen left join, ohne Zeilen, wo die genannten Werte in der Spalte Duplikate.
Zum Beispiel,
ich habe Tabelle X:
id Value
A 2
B 4
C 5
und Tabelle Y:
id Value
A 2
A 8
B 2
Mache ich einen LEFT JOIN:
SELECT*
FROM X LEFT JOIN Y ON X.id = Y.id;
Hätte gerne so etwas wie:
id Value
A 2 A 2
B 4 B 2
C 5
so, dass doppelte id (8) aus Tabelle Y ist nicht berücksichtigt.
Funktioniert der Zugang unterstützen das Schlüsselwort "distinct"?
ja, ich denke, es hält nur, wo die ganze Zeile wird dupliziert, in meinem Fall nur 1 Spalte Wert wird dupliziert
leider Nein. gibt es nicht eine Möglichkeit für den Zugriff?
sind Sie sicher, dass Ihre ID-Spalte ist für A, B, C? Hast du nicht umkehren Spalten?
wie ist
ja, ich denke, es hält nur, wo die ganze Zeile wird dupliziert, in meinem Fall nur 1 Spalte Wert wird dupliziert
leider Nein. gibt es nicht eine Möglichkeit für den Zugriff?
sind Sie sicher, dass Ihre ID-Spalte ist für A, B, C? Hast du nicht umkehren Spalten?
wie ist
A 8
ein Duplikat? Nicht du meinst A 2
?InformationsquelleAutor Ale | 2014-09-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie es mit
GROUP BY
:Beachten Sie, dass es ist nicht notwendig, um
Y.id
in den mix, weil Sie entwedernull
oder gleichX.id
.Ja,
MIN
undMAX
Aggregat-Funktionen bleiben gültig für Zeichenfolgen als gut, aber Sie bedeuten lexikographisch erste / Letzte string. Die Entscheidung, welche Position zu nehmen, wenn es mehr als eine passende Zeile ist zentral für die Formulierung der Abfrage. Ich verwendetMIN
weil deine Beispiel-Ergebnis abgeholt2
aus der Liste der2
und8
.InformationsquelleAutor dasblinkenlight
Du suchst GROUP BY Aggregation der Y-Tabelle von Datensätzen, effektiv reduzieren Sie nach unten, um eine Zeile pro id. Ich habe gewählt MIN aber man könnte die SUMME wenn Sie ganze zahlen sind, wie dein Beispiel-Daten.
Habe ich genau das, was Sie gefragt haben. Aber meiner Meinung nach, das y ist.Id ist unnötig, in der select-und group by-Liste.
MIN funktioniert für text, wählen Sie das erste Element alphabetisch
Vielen Dank! Ich denke, das ist genau das, was ich brauchte.
+1 . . . Diese Antwort war nicht nur die erste, aber es ist auch eine genauere, darunter alle vier Spalten in der Frage genannten.
InformationsquelleAutor Holly Styles
Dies ist nicht, was Sie für Fragen im besonderen, aber wenn Sie brauchen Sie nicht beigetreten sind, könnten Sie eine union.
Würden Sie am Ende immer
Okay. Ich werde immer noch lassen Sie die Antwort hier für die Zukunft ALSO Browser auf, falls Sie auf der Suche nach einer Lösung wie dieser.
InformationsquelleAutor Elias
Hmmm, ich denke, Sie können dies tun, in Access mit korrelierten Unterabfragen:
Bedeutet dies nicht garantieren, dass die Werte kommen aus der gleichen Zeile, aber das ist keine große Sache, in diesem Fall, weil die
y.id
ist entweder vorhanden (und das gleiche wiex.id
) oder es istNULL
. Diey.value
kommt aus einer beliebigen passenden Zeile.MIN
Funktion. Aber danke trotzdem! 🙂InformationsquelleAutor Gordon Linoff