Update innerhalb einer Tabelle

06/05/2008 - 15:23 von Rene Kadner | Report spam
In einer Tabelle müssen einige Daten von einem Quellsatz überschrieben
werden, was nicht richtig funktioniert.

Bsp: Die Tabelle dokument_positionen enthàlt die Artikel eines Angebotes.
Unter bestimmte Voraussetzungen soll beim speichern von Angaben zu einer
Position alle anderen diesen Wert auch bekommen. Unten wird die Position mit
der id = 100373 gespeichert. Alle anderen Positionen des Angebots
(dokument_id = 18776) sollen bestimmte Werte vom eben gespeicherten
erhalten. Leider wird das Statement nicht ausgeführt (0 Zeilen betroffen).

UPDATE dokument_position
SET
gueltig_bis = a.gueltig_bis
, anfrage_am = a.anfrage_am
, lieferbar_ab = a.lieferbar_ab
, lieferbar_bis = a.lieferbar_bis
FROM dokument_position a
WHERE dokument_id = 18776 AND id <> 100373 -- Alle Sàtze außer dem Quellsatz
AND a.id = 100373 -- Quellsatz (id ist Primàrschlüssel)

was mache ich falsch? Alternativ könnte ich die Updatefelder in Variablen
packen, das wollte ich aber vermeiden (da wàren 14 nötig).

Grüße
René
 

Lesen sie die antworten

#1 Christoph Ingenhaag
06/05/2008 - 16:15 | Warnen spam
"Rene Kadner" wrote:

In einer Tabelle müssen einige Daten von einem Quellsatz überschrieben
werden, was nicht richtig funktioniert.

Bsp: Die Tabelle dokument_positionen enthàlt die Artikel eines Angebotes.
Unter bestimmte Voraussetzungen soll beim speichern von Angaben zu einer
Position alle anderen diesen Wert auch bekommen. Unten wird die Position mit
der id = 100373 gespeichert. Alle anderen Positionen des Angebots
(dokument_id = 18776) sollen bestimmte Werte vom eben gespeicherten
erhalten. Leider wird das Statement nicht ausgeführt (0 Zeilen betroffen).

UPDATE dokument_position
SET
gueltig_bis = a.gueltig_bis
, anfrage_am = a.anfrage_am
, lieferbar_ab = a.lieferbar_ab
, lieferbar_bis = a.lieferbar_bis
FROM dokument_position a
WHERE dokument_id = 18776 AND id <> 100373 -- Alle Sàtze außer dem Quellsatz
AND a.id = 100373 -- Quellsatz (id ist Primàrschlüssel)

was mache ich falsch? Alternativ könnte ich die Updatefelder in Variablen
packen, das wollte ich aber vermeiden (da wàren 14 nötig).

Grüße
René




Hi René ,

UPDATE a
SET
gueltig_bis = b.gueltig_bis
, anfrage_am = b.anfrage_am
, lieferbar_ab = b.lieferbar_ab
, lieferbar_bis = b.lieferbar_bis
FROM dokument_position a, dokument_position b
WHERE a.aid <> 100373
and b.id = 100373

ist nur schnell dahergetippt, sollte aber so funktionieren.

Vg
Christoph

Ähnliche fragen