Teilmenge aus Datenbestand ermitteln
Koontz
- datenbank
Hi Leutz,
ich habe folgendes Problem: In Access2000 habe ich zwei Tabellen. Die zweite Tabelle enthält eine Teilmenge der ersten Tabelle. Ich kann die Tabellen ja über ein INNER JOIN so verbinden, dass alle Datensätze angezeigt werden, die sowohl in der ersten als auch in der zweiten Tabelle vorkommen. Nun möchte ich aber nur die Datensätze angezeigt haben, welche in der ersten, aber nicht in der zweiten Tabelle vorkommen. Also praktisch alle Datensätze in der ersten Tabelle abzüglich der Datensätze in der zweiten Tabelle.
Über ein OUTER JOIN lässt sich so etwas nicht realieren, da dort immer von irgendeiner Tabelle alle Datensätze angezeigt werden.
Ich hoffe, Ihr versteht mein Problem.
Wäre nett wenn mir jemand helfen könnte.
Gruss,
Koontz
Hi,
ich habe folgendes Problem: In Access2000 habe ich zwei Tabellen. Die zweite Tabelle enthält eine Teilmenge der ersten Tabelle.
Redundanz ist zu vermeiden.
Nun möchte ich aber nur die Datensätze angezeigt haben, welche in der ersten, aber nicht in der zweiten Tabelle vorkommen.
Beschäftige Dich anhand der Doku Deines DBMS mit der MINUS-Klausel.
Cheatah
Hallo,
Die zweite Tabelle enthält eine Teilmenge der ersten Tabelle.
warum? ist der Zusammenhang nicht über spezielle felder einer Tabelle steuerbar?
In MS-SQL-Server kann man anhand Listen und unterselects arbeiten
sql = "select * from tabelle1 where id not in (select idtabelle2 from tabelle2) order by deinwert";
die liste kann auch manuell mit Komma getrennt angelegt sein.
Ob das die beste Lösung ist und ob access das macht weiß ich leider nicht.
Odium
Besten Dank,
ich werd's mal ausprobieren.
Gruss,
Koontz
Hallo Selferaußen,
im Prinzip sind solche Ausschlussabfragen genz einfach durch zwei Stufen möglich. Du kannst die Abfrage dann auch erst einmal im Datenbankfenster "Abfragen" bauen und schauen, was schlussendlich dabei herauskommt.
1. Schritt: Bau eine Abfrage auf, die genau die Sätze anzeigt, die Du nicht sehen willst.
2. Schritt: baue eine Abfrage auf, die die Obermenge aller Sätze zeigt und binde die andere Abfrage so ein, dass sie immer auf NULL zeigt.
Ergebnis: Es werden alle Sätze der Obermnenge angezeigt, die in der Untermenge keinen Partner gefunden haben, denn die Bedingung lautet ja, dass die Relation NULL ergeben soll.
Das kannst Du dann schließlich auch in SQL umsetzen. Ist eine geschachtelte Abfrage (Subselect).
Es müsste aber auch mit einem Left outer Join gehen. Ich finds mein Beispiel nur eben leider nicht. Damit such ich immer Intgritätsbrüche, wenn es mal wieder gekracht hat in der DB und sowas ähnliches willst Du ja auch.
Grüße
Chris (C)