April 14, 2021, 15:27:02

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Anfügen und Updaten von Daten mehrerer Tabellen in einer Zieltabelle

Begonnen von yeti89, Februar 28, 2021, 11:52:03

⏪ vorheriges - nächstes ⏩

yeti89

Hallo liebe Access-Community,

ich hoffe, ihr könnt mir bei nachfolgend geschildertem Problem weiterhelfen.

Ich habe für 5 unabhängige Projekte jeweils eine eigene Tabelle angelegt (,,Pro1"-,,Pro5"), die neben individuellen/projektspezifischen, auch folgende gemeinsame Spalten beinhalten: ,,Projektcode", ,,Testsample", ,,Lauf", ,,Analysen".

In einer einzigen Tabelle (,,Kombi") sollen nun in den Spalten ,,Projektcode", ,,Testsample", ,,Lauf", ,,Analysen" die Inhalte aller 5 Tabellen kombiniert werden.
Dies habe ich über nachfolgende Anfügeabfrage bewerkstelligt:

INSERT INTO Kombi (Projektcode, Testsample, Lauf, Analysen)
SELECT Q.Projektcode, Q.Testsample, Q.Lauf, Q.Analysen
FROM (SELECT A.Projektcode, A.Testsample, A.Lauf, A.Analysen FROM Pro1 AS A
WHERE [No] not in (SELECT [NO] from Kombi)
UNION ALL
SELECT B.Projektcode, B.Testsample, B.Lauf, B.Analysen FROM Pro2 AS B
WHERE [No] not in (SELECT [NO] from Kombi)
UNION ALL ...
) AS Q;

Den WHERE Befehl habe ich integriert, um keine doppelten Datensätze in ,,Kombi" anzufügen (Spalte ,,No" ist eindeutiger Parameter in jeder Tabelle; keine doppelte Vergabe). Diese Anfügeabfrage funktioniert auch wunderbar und jetzt kommt das eigentliche Problem.

Die 5 Projekt-Tabellen sind sozusagen lebende Dokumente, die teilweise noch überarbeitet werden können. Wenn es zu einer solchen Überarbeitung kommt, möchte ich auch in der ,,Kombi" Tabelle die aktuellen Daten vorliegen haben, ohne den Inhalt komplett zu löschen und die Anfügeabfrage erneut ausführen zu müssen. Grund: in der Tabelle ,,Kombi" werden nach der Anfügeabfrage in anderen Spalten bereits weitere Informationen händisch eingetragen, die durch das Löschen der Datensätze natürlich auch weg wären und immer wieder neu eingetragen werden müssten. Diese zusätzlichen Eintragungen sind auch der Grund, wieso eine UNION ALL SELECT Abfrage alleine für mich nicht in Frage kommt.
Ich könnte mir vorstellen, dass diese Fragestellung/dieses Problem über eine UPDATE Query gelöst werden kann, allerdings schaffe ich es nicht, einen funktionierenden Syntax mit den 5 Tabellen als Input- und der einen Tabelle als Output-Tabelle zu erstellen.

Viele Grüße und vielen Dank im Voraus!

MzKlMu

Hallo,
da Du in der Lage bist, die 5 Tabelle per Union zusammen zu packen, gehören die 5 Tabellen mit den gemeinsamen Feldern gleich in einer Tabelle zusammengefasst. Die projektspezifischen Felder/Daten können dann in je einer Tabelle erfasst werden. Diese 5 spezifischen Tabellen sind dann 1:1 mit der Haupttabelle in Beziehung zu setzen. Das ist einer der seltenen Fälle für 1:1 Beziehungen.
Dann kannst Du mit einem Formular mit 5 Unterformularen auf 5 Registern arbeiten und Dein Problem hat sich erledigt. Es braucht weder eine Anfüge- noch eine Aktualisierungsabfrage und die Daten sind stets automatisch aktuell.

Sind die spezifischen Daten der Projekte wirklich so unterschiedlich dass da jeweils eine extra Tabelle benötigt wird?

Zeige mal ein Bild des Beziehungsfensters, auf dem man die Tabellen mit allen Feldern sieht.
Gruß
Klaus

ebs17

Zitatsozusagen lebende Dokumente
Mach sie tot.

Wie schon gesagt: Gleiche Informationen solltest Du gleich in einer Tabelle sammeln. Dieser gönnst Du vielleicht noch eine Spalte für das Projekt / die Herkunft.
Dort kann man auch Eigeneinträge ergänzen.
Ungewünschte Duplikate kann man mit einem eindeutigen Index über die relevanten Felder abblocken.
Mit freundlichem Glück Auf!

Eberhard