Tabellen zusammenfügen
Hallo Forum,
ich habe folgendes Problem mit Access 03 (leider noch blutiger Anfänger, googlen führte zu keinem Ergebnis): In zwei Tabellen sind unterschiedliche Merkmale zu einer Artikelnummer aufgeführt. Diese möchte ich gerne kombinieren. Jetzt gibt es Nummern, die in Tabelle 1 vorhanden sind, aber nicht in Tabelle 2 und umgekehrt. Über die Verknüpfungseigenschaften einer Abfrage kann ich ja alle Werte EINER Tabelle inkludieren, aber nicht BEIDER. Wie bekomme ich es hin, dass ich hier alle Werte mit einbeziehen kann?
Ich hoffe mein Problem ist einigermaßen verständlich, danke auch schonmal im Voraus für Hilfen!
Antwort schreiben
Antwort 1 von KJG17 vom 02.12.2020, 13:40 Options
Hallo Peder,
das geht z.B. mit Hilfe einer dritten Tabelle, die als Index-Wert alle vorkommenden Artikel-Nummern aus beiden Tabellen enthält und mit diesen über 1:n-Beziehungen verknüft ist.
Eine andere Möglichkeit wäre, die nur in Tabelle 2 enthaltenen Artikel-Nummern ohne weitere Angaben nachträglich in Tabelle 1 einzugeben und die Abhängigkeit der Tabellen so zu gestalten, das dies künftig automatisch erfolgt, wenn eine noch nicht in Tabelle 1 vorkommende Artikel-Nummer in Tabelle 2 angelegt wird. (Prüfung der referenziellen Integrität in der Beziehung aktivieren.) Falls es jedoch in Tabelle 1 Felder gibt, die zwingend ausgefüllt werden müssen, wird es wohl auf die erste Variante hinauslaufen.
Allerdings bin ich nur auch nicht gerade ein Access-Guru, es könnten durchaus noch bessere Tipps kommen.
Gruß
Kalle
Antwort 2 von Peder vom 02.12.2020, 17:04 Options
Hi Kalle
Danke erstmal für die Hilfe. Kannst du mir bitte nochmal erklären wie du das mit der dritten Tabelle meintest? Meines Wissens kann ich doch keine Felder einer Tabelle mit denen anderer Tabellen verknüpfen oder? Oder meintest du eine Abfrage? Hier wäre ja (wie oben beschrieben das Problem der Verknüpfungseigenschaften). Eine Anfügeabfrage möchte ich eigentlich vermeiden.
Ich glaube ich komme da so nicht weiter, hat vielleicht noch jemand ne Idee?
Gruß, Peder
Antwort 3 von lorf55 vom 02.12.2020, 21:41 Options
Hallo Peder,
welche Felder du in deiner Abfrage abfragst, hat mit den Verknüpfungseigenschaften nur nachrangig bis gar nichts zu tun. Du kannst grundsätzlich alle Felder aller beteiligten Tabellen anzeigen lassen und zusätzlich auch noch welche aus diesen berechnen.
Über die Verknüpfungseigenschaften wird geregelt, ob du alle Werte aus einer und nur die jeweils gleichen aus der anderen siehst (Left Join/Right Join), oder ob du aus beiden alle Werte siehst (Inner Join). Das hat nichts mit den anzeigbaren Feldern zu tun.
Über die Verknüpfungseigenschaften wird einfach geregelt, wie man abfragt.
Über die Felder wird geregelt, was man abfragt.
Ich hoffe, das ist zu verstehen.
Gruß
lorf
Antwort 4 von Peder vom 03.12.2020, 08:51 Options
Hallo lorf,
das habe ich so schon verstanden, löst aber mein eigentliches Problem nicht. Vielleicht habe ich mich etwas unklar ausgedrückt:
Im Wesentlichen suche ich nach einer Möglichkeit die Werte aus beiden Tabellen zusammenzufassen. Also (wenn man das so sagen kann...) eine Kombination aus Left Join und Right Join.
Gerade bekomme ich den Hinweis, dass es mit der UNION Abfrage klappt. Dann werde ich mal wieder Google anschmeißen und mich einlesen...
Danke für die Hilfe.
Antwort 5 von PilzSchneider vom 04.12.2020, 20:00 Options
Hallo Peder,
die Lösung ist sehr einfach, in dem man zunächst zwei Abfragen erstellt, die genau die gleichen Ausgabefelder enthalten. Die erste wird mit der zweiten mit der Option 2 verknüpft (Pfeilspitze auf der Tabelle 2), sodass alle Elemente der Tabelle 1 enthalten sind. Die zweite verknüpft umgekehrt (Pfeilspitze auf der Tabelle 1). Hier muss aber zusätzlich ein Feld der Tabelle 1 in die Ausgabetabelle genommen werden, den Haken für die Anzeige entfernt werden und im Bedingungsfeld ein NULL (nicht 0 oder sowas, so wie es da steht = bedeutet nicht vorhanden) eingeben werden. Damit werden nur die Datensätze in der Tabelle 2 angezeigt, die nicht in der Tabelle 1 enthalten sind.
Jetzt muss eine weitere Abfrage erstellt werden und in den SQL-Modus umgestellt werden. Jetzt muss man eintippen:
Select * from [hier der Abfragename 1]
union
Select * from [hier der Abfragename 2]
Wenn alle Ausgabefelder der beiden Abfragen identisch sind, dann wird über diese Abfrage alles dargestellt.
Selbstverständlich kann man dieses auch in einer einzelnen Abfrage erreichen, aber dazu sind dann SQL-Kenntnisse erforderlich. Aber so geht es ja auch.
Viele Grüße
Reinhold
Antwort 6 von Peder vom 05.12.2020, 08:10 Options
Guten Morgen Reinhold,
danke auch nochmal für deinen Hinweis. Inzwischen hatte sich mein Problem auch schon gelöst. Als Access Neuling war mir die UNION Abfrage noch unbekannt, mit der das letztlich aber dann ja kein Problem mehr war. Genau das hatte ich gesucht.
Grüße, Peder