Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: silentwolf am April 18, 2020, 11:47:42

Titel: SQL Update mit mehreren Feldern
Beitrag von: silentwolf am April 18, 2020, 11:47:42
Hallo,

Ich habe eine Update Query erstellt die ein Feld in der Zieltabelle um dem Feld in der Quelle updatet wenn FeldA, FeldB, FeldC in beiden Tabellen gleich sind.

Die Abfrage läuft ohne Error durch. Die Quelle hat 171 DS.. Zieltabelle hat 700 DS...
wenn nun die Abfrage ausgeführt wird sagt Access es werden 993 DS aktualisiert.

Wie kann denn das sein wenn nach der Aktualisierung Quelle und Ziel nach wie vor die selbe bzw. richtige Anzahl an DS hat?

Warum nicht einfach die 700 DS ? Wird jetzt was anderes auch noch upgedated was eigentlich nicht sein darf?
Müsste nun alle DS kontrollieren.. auch mühsam ..

Würde mich freuen wenn vielleicht jemand mir sagen kann

UPDATE Quelle INNER JOIN Ziel ON (Quelle.C = Ziel.C) AND (Quelle.B = Ziel.B) AND (Quelle.A = Ziel.A) SET Ziel.D = [Quelle].[D];

993 DS Werden hier aktualisiert

Titel: Re: SQL Update mit mehreren Feldern
Beitrag von: ebs17 am April 18, 2020, 13:21:28
Du wirst ein Datenproblem haben => Duplikate im Mehrfachschlüssel.

Ein JOIN hat zwei Wirkungen: Er filtert auf Übereinstimmungen der Schlüssel. Bei Duplikaten von Schlüsseln vervielfältigt er aber ebenso.
Titel: Re: SQL Update mit mehreren Feldern
Beitrag von: DF6GL am April 18, 2020, 13:22:00
Hallo,

irgendwie paradox:

Tabelle "Quelle" soll aktualisiert werden, wenn doch das zu aktualisierende Feld ("D")  sich in Tabelle "Ziel" befindet. ??

Zudem wird der Join nicht über ein eindeutiges Schlüsselfeld gesetzt.  Ist denn sichergestellt, dass die Kombination der 3 Felder nicht öfters vorhanden ist?
Titel: Re: SQL Update mit mehreren Feldern
Beitrag von: silentwolf am April 18, 2020, 13:36:10
Hallo,

ich versuche es nochmal vielleicht etwas besser zu formulieren.
Quelle hat 4 Felder ...A,B,C,D
Ziel hat mehrere Felder... aber wenn A,B,C gleich sind wie in der Tabelle Quelle soll das Feld "D" Im Ziel mit dem Wert aus Quelle D gefüllt werden.

Also ich bekomme die Felder aktualisiert und es scheint in Ordnung zu sein aber warum bekomme ich denn mehr angezeigt das mehr Datensätze aktualisiert werden als in der Ziel Tabelle Datensätze vorhanden sind...
Die Ziel Tabelle hat aber nach der Aktualisierung die richtigen also die selbe Anzahl an Datensätzen als vor der Aktualisierung.

Hoffe das ist so etwas besser zum Verstehen.

Gruß
Albert
Titel: Re: SQL Update mit mehreren Feldern
Beitrag von: DF6GL am April 18, 2020, 13:56:03
Hallo,

nun, wir verstehen es schon, nur Du vermutlich nicht.

Der Join als solches liefert mehr DS, als es Felder "D" gibt. Und gezählt werden alle diese DS, auch wenn es bei manchen gar kein Feld "D" zu aktualisieren gibt.

Wobei ich trotzdem schreiben würde:
UPDATE Ziel INNER JOIN ..


Mach mal eine Auswahlabfrage und prüfe die Anzahl Datensätze:

Select * from  Quelle INNER JOIN Ziel ON (Quelle.C = Ziel.C) AND (Quelle.B = Ziel.B) AND (Quelle.A = Ziel.A)
Titel: Re: SQL Update mit mehreren Feldern
Beitrag von: silentwolf am April 18, 2020, 14:23:15
Hallo Franz,
Danke für die Erklärung!
Werde es mir dann noch genau ansehen!

Vielen Dank und schönes WE