# Update mit Select- Anweisung



## soa (18. Dezember 2005)

Hallo zusammen,

ich würde gern in einer Tabelle alle Werte aus dem Attribut "Menge", die die MaterialID 1 haben, auf den höchsten Wert des Attributes "Menge" setzen.

Also: 

SELECT MAX(Menge) FROM <tabelle>;

gibt mir den höchsten Wert von Menge aus der Tabelle.

Nun sollen alle Werte aus Menge, die die MAterialID 1 haben, auf diesen Wert gesetzt werden.

Das ganze in einem Statement.


Vielen Dank im voraus.

MfG
SOA


----------



## Nospherates (22. Dezember 2005)

Hi,
du kannst nicht innerhalb einer Update Abfrage ein Sub-Select auf die selbe Tabelle tätigen.
Du müsstest entweder mit Zwischentabellen arbeiten oder in deinem Fall einfach das Update manuell zusammensetzen (ist ja ein konstanter Wert).

Gruß


----------



## soa (23. Dezember 2005)

Hallo,

ich habe es halbwegs geklärt, bzw. auf der anderen Seite ist gar nichts geklärt.

Die Abfrage wäre so wie ich es gedacht habe richtig:

UPDATE <Tabelle> SET Menge = (SELECT MAX(Menge) FROM <tabelle>)
WHERE ID = irgendetwas;
-------------------------------------------------------------------------------------------------------------

Mit Firebird funktioniert wiese Abfrage perfekt.

Nur in MySQL kommt eine Fehlermeldung. Habe meine DB extra auf die Version 5.0
updedated, jedoch scheint es so zu sein, das immer noch nicht alle SUBSELECTS
unterstützt werden.

Gruß
SOA


----------



## ronaldo84 (23. Dezember 2005)

Ich glaube das geht so:

```
update tabelle1, tabelle2 set tabelle1.beschreibung = tabelle2.beschreibung where tabelle1.id=tabelle2.id;
```


----------

