Neuigkeiten:

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

Mobiles Hauptmenü

SQL Update mit mehreren Feldern

Begonnen von silentwolf, April 18, 2020, 11:47:42

⏪ vorheriges - nächstes ⏩

silentwolf

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


ebs17

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.
Mit freundlichem Glück Auf!

Eberhard

DF6GL

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?
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

silentwolf

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

DF6GL

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)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

silentwolf

Hallo Franz,
Danke für die Erklärung!
Werde es mir dann noch genau ansehen!

Vielen Dank und schönes WE