Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Hansgerd am März 22, 2011, 12:00:31

Titel: Verschachtelte Update Abfrage SQL
Beitrag von: Hansgerd am März 22, 2011, 12:00:31
Hallo, 
ich habe ein Problem mit einer Abfrage in Access:

habe die Tabelle:
,,artikelstamm"

ArtNr      Warengruppe      Länge

1-01      1         20
2-01      2         35   
..      ...         ....
3-01      24         15   
3-02      24         30
4-01      24         0
4-02      24         45   
4-03      24         0
...      ...         ...

Aufgabe:  Alle Artikel der Warengruppe 24 welche die Länge Null haben sollen aktualisiert werden. Als Länge dieser Artikel (hier 4-01 und 4-03) soll die Durchschnittslänge über alle Artikel der Warengruppe (welche nicht die Länge Null haben) eingetragen werden.

Mein code:

UPDATE artikelstamm
SET Länge = (SELECT AVG(Länge)
                             FROM artikelstamm
                             WHERE (Warengruppe=24))
WHERE ((Warengruppe=24) AND (Länge=0));

)


Wenn ich ausführe kommt der Fehler: Operation muss eine aktualisierbare Abfrage verwenden

Wäre super cool wenn mir jemand einen Tip geben könnte was falsch ist.
Danke schon im Voraus
Gruß
Hans
Titel: Re: Verschachtelte Update Abfrage SQL
Beitrag von: Josef P. am März 22, 2011, 12:16:07
Hallo!

Eigentlich wäre nichts falsch. Jet interpretiert leider eine Abfrage als nicht aktualisierbar, wenn eine nicht aktualisierbares Subselect-Anweisung vorkommt - auch wenn das eigentlich keine Rolle für die Aktualisierbarkeit des Datensatzes spielt.
Abhilfe schafft in so einem Fall der Einsatz von Domain-Aggregat-Funktionen oder einer VBA-Hilfsfunktion.
z. B.:
UPDATE artikelstamm
SET Länge = DAVG("Länge", "Artikelstamm", "Warengruppe=24")
WHERE Warengruppe=24 AND Länge=0


mfg
Josef
Titel: Re: Verschachtelte Update Abfrage SQL
Beitrag von: Hansgerd am März 22, 2011, 13:04:26
Hey super das hat funktioniert,danke!!