Aktualisierungsabfrage mit Aggregatfunktion Max()

14/01/2010 - 12:50 von Wilfried Dietrich | Report spam
Hallo,

ich bekomme es einfach nicht hin, mit nur einer
Abfrage das richtige Ergebniss zu erziehlen.

- Jet-SQL
- zwei Tabellen: Tabelle1 u. Tabelle2
- Verknüpfung 1 : n
- Tabelle1.ANr : Tabelle2.ANr
- Tabelle1 u. 2 besitzen ein Feld "Datum"
- Tabelle2 hat ein Primàrschlüsselfeld RID

In Tabelle1 soll das Feld "Datum" das mit dem größten, max.
Datum aus Tabelle2 auch Feld "Datum", unter Berücksichtigung
der Verknüfung, aktualisiert werden.

Ich habe nun folgendes probiert:

"UPDATE Tabelle1 INNER JOIN Tabelle2 ON Tabelle1.ANr = Tabelle2.ANr
SET Tabelle1.Datum = Tabelle2.Datum"

Bei dieser Abfrage steht aber das letzte Datum lt. Primàrschlüsselfeld "RID"
in Tabelle1.

Und,

"UPDATE Tabelle1 INNER JOIN Tabelle2 ON Tabelle1.ANr = Tabelle2.ANr
SET Tabelle1.Datum = Max(Tabelle2.Datum)"

funktioniert nicht, da Tabelle1.Datum nicht Teil der Aggregatfunktion ist.

Wie muss die korrekte Aktualisierungsabfrage aussehen?
Sehe ich den Wald vor lauter Bàume nicht, oder geht das garnicht so
wie ich das Denke?

Danke u. Gruß
Wilfried
 

Lesen sie die antworten

#1 Wilfried Dietrich
15/01/2010 - 10:49 | Warnen spam
Hallo,

hat keiner einen Vorschlag bzw. eine Lösung parat.
Vielleicht habe ich mich auch falsch ausgedrückt, so das niemand
versteht was ich meine und möchte?

Wie würdet Ihr die folgende Aufgabe lösen?
Zwei Tabellen in einer Jet-DB.

Felder in Tabelle1:
ANr = Primàrschlüssel, Long Integer, ohne Duplikate
Datum = Datum/Uhrzeit

Felder in Tabelle2:
RID = Primàrschlüssel, Long Integer, Autowert
ANr = Zahl, Long Integer, Indiziert Duplikate möglich
Datum = Datum/Uhrzeit

Beziehung:
Tabelle1.ANr : Tabelle2.ANr = 1 : n

In Tabelle1 sind z.B. folgende Datensàtze vorhanden:
ANr Datum
5 NULL
10 06.01.2009
11 12.02.3009
12 NULL

Und in Tabelle2 z.B. folgendes:
RID ANr Datum
1 5 03.03.2009
2 10 12.03.2009
3 5 05.03.2009
4 5 04.03.2009
5 5 04.03.2009
6 10 13.03.2009

Zu beachten ist RID 3, da fàllt das Datum etwas aus der Reihe.

Ich möchte, dass bei Tabelle1 das Feld "Datum" mit dem
höchsten, max. Datum aus Tabelle2 aktualisiert wird, unter
Berücksichtigung der Beziehung "Tabelle1.ANr = Tabelle2.ANr".
Nach der Aktualisierung sollte folgendes in Tabelle1 stehen:
ANr Datum
5 05.03.2009
10 13.03.2009
11 12.02.3009
12 NULL

Die Aktualisierungsabfrage:
"UPDATE Tabelle1 INNER JOIN Tabelle2 ON Tabelle1.ANr = Tabelle2.ANr
SET Tabelle1.Datum = Tabelle2.Datum"
liefert leider ein falsches Ergebnis in Tabelle1.
ANr Datum
5 05.03.2009
10 04.03.2009
11 12.02.3009
12 NULL

Wie würdet Ihr das lösen, ohne jeden DS einzeln anzufassen und zu aktualisieren?

Danke schon mal im Voraus.
Viele Grüße,
Wilfried

Ähnliche fragen