phpbar.de logo

Mailinglisten-Archive

update mit ermittelten werten in einer query

update mit ermittelten werten in einer query

Tobias Daur daur at so-nso.de
Son Mai 28 13:39:58 CEST 2006


Hallo zusammen,

ich möchte bei einer Bestellverwaltung mit (vereinfacht) den Tabellen
artikel, bestellung, bestellposten für jeden Artikel einen Wert (Anzahl,
die beim Lieferanten bestellt werden soll: "empfohlen") ermitteln und
(das ist mein Problem) diesen in der Tabelle artikel notieren.

Hier die Query, mit der ich den Wert ermittle:

SELECT DISTINCT 
IF (
(
IFNULL( SUM( bestellposten.anzahl ) , 0 ) - artikel.stock -
artikel.lieanzahl + artikel.lieanzahlgeliefert
) >0, (
IFNULL( SUM( bestellposten.anzahl ) , 0 ) - artikel.stock -
artikel.lieanzahl + artikel.lieanzahlgeliefert
), 0
) + artikel.bestellen AS empfohlen, artikel.idartikel
FROM artikel
LEFT JOIN bestellung ON bestellung.bes_status <300
LEFT JOIN bestellposten ON bestellposten.artikel_idartikel =
artikel.idartikel
AND bestellung.idbestellung = bestellposten.bestellung_idbestellung
GROUP BY artikel.idartikel


Die Query macht folgendes: Sie addiert die Anzahlen der den Artikel
betreffenden Bestellposten aus den laufenden (status < 300) Bestellungen
(falls es welche gibt - dafür das IFNULL), zieht davon die vorhandene
Anzahl (stock) ab, sowie die bereits beim lieferanten bestellte, zzgl.
der schon gelieferten. 
Sie gibt nun eine Artikel-ID (idartikel) und den empfohlen-Wert aus. 

Ich möchte nun gerne diesen Wert, weil die Abfrage reicht lange dauert,
per cronjob ausführen und für jeden Artikel in einem Feld
artikel.empfohlen speichern.

Meine Frage:

Wie kann ich bzw. kann ich überhaupt eine UPDATE-Query formulieren, die
die obige Query beinhaltet und dann den ermittelten Wert für jeden
Artikel-Datensatz in das Feld 'empfohlen' schreibt?

Oder muß ich mir erst mit der Query 30.000 Datensätze zurückgeben
lassen, um diese dann mit 30.000 UPDATEs zurückzuschreiben? (Ich hoffe
mal, die Antwort ist 'nö' :-))


Danke für Eure Ideen


Tobias

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: Dies ist ein digital signierter Nachrichtenteil
URL         : http://lists.mushaake.org/pipermail/mysql-de/attachments/20060528/7dcc1736/attachment.bin 

php::bar PHP Wiki   -   Listenarchive