Galanos
Aktives Mitglied
Thread Starter
- Dabei seit
- 19.12.2005
- Beiträge
- 625
- Reaktionspunkte
- 23
Hallo zusammen
Ich suche nach einem SQL-Befehl, der eine Aktualisierung und eine Loeschung kombiniert. Das Ganze koennte ich auch mittels einem PHP-Script loesen, nur waere ein einzelner Query eleganter und weniger anfaellig fuer Fehler und spart ausserdem – maessig – Rechenzeit.
Ich habe in meinem Shop vier (relevante) Tabellen, „Artikel“, „Bestellte_Artikel“, „Bestellungen“ und „Kunden“.
Bei der Stornierung einer Bestellung halte ich es bisher so, dass ich mittels folgendem Query die Bestellung, die dazugehoerigen Bestellten Artikel und den Kunden loesche (ja, auch den Kunden, andere Geschichte):
Die ersten 2 WHERE-Klauseln dienen natuerlich dazu, die Verbindung zwischen den Tabellen herzustellen, „XYZ“ ist die zu loeschende Bestellung.
Anschliessend stelle ich die Anzahl der Artikel auf Lager (in der Tabelle „Artikel“) per phpMyAdmin auf die Zahl vor der Bestellung. Dies liesse sich aber auch folgendermassen ausdruecken:
Nun moechte ich gern diese beiden Queries verbinden, moeglicherweise mit einem Nested Query. Dabei sollte zuerst die Anzahl auf Lager wieder hochgestellt und anschliessend die uebliche Loeschung vorgenommen werden. Vielleicht in diese Richtung:
Nur … wie uebergebe ich die Bestellungs-ID vom inneren zum aeusseren Query? Kann sein, dass ich da einem Denkfehler erliege, aber mir erscheint das Problem so alltaeglich, dass ich beinahe eine Patentloesung vermute
Ah ja, es geht um MySQL 5.x. Mir ist klar, dass ich einfach 2 per Semikolon getrennte Befehle schreiben und mittels Script abklappern koennte, aber das waere irgendwie unheimlich holperig.
Kann mir da jemand helfen?
Schon mal danke, Galanos
Ich suche nach einem SQL-Befehl, der eine Aktualisierung und eine Loeschung kombiniert. Das Ganze koennte ich auch mittels einem PHP-Script loesen, nur waere ein einzelner Query eleganter und weniger anfaellig fuer Fehler und spart ausserdem – maessig – Rechenzeit.
Ich habe in meinem Shop vier (relevante) Tabellen, „Artikel“, „Bestellte_Artikel“, „Bestellungen“ und „Kunden“.
Bei der Stornierung einer Bestellung halte ich es bisher so, dass ich mittels folgendem Query die Bestellung, die dazugehoerigen Bestellten Artikel und den Kunden loesche (ja, auch den Kunden, andere Geschichte):
Code:
DELETE Bestellte_Artikel, Bestellungen, Kunden
FROM Bestellte_Artikel, Bestellungen, Kunden
WHERE Bestellte_Artikel-Bestellung = Bestellungen-ID AND Bestellungen-Kunde = Kunden-ID AND Bestellungen-ID = XYZ
Anschliessend stelle ich die Anzahl der Artikel auf Lager (in der Tabelle „Artikel“) per phpMyAdmin auf die Zahl vor der Bestellung. Dies liesse sich aber auch folgendermassen ausdruecken:
Code:
UPDATE Artikel, Bestellte_Artikel
SET Artikel_AufLager = (Artikel-AufLager + Bestellte_Artikel-Anzahl)
WHERE Artikel-ID = Bestellte_Artikel-Artikel AND Bestellte_Artikel-Bestellung = XYZ
Nun moechte ich gern diese beiden Queries verbinden, moeglicherweise mit einem Nested Query. Dabei sollte zuerst die Anzahl auf Lager wieder hochgestellt und anschliessend die uebliche Loeschung vorgenommen werden. Vielleicht in diese Richtung:
Code:
DELETE bla
FROM bla
WHERE
(UPDATE bla
SET bla
WHERE bla = XYZ)
Ah ja, es geht um MySQL 5.x. Mir ist klar, dass ich einfach 2 per Semikolon getrennte Befehle schreiben und mittels Script abklappern koennte, aber das waere irgendwie unheimlich holperig.
Kann mir da jemand helfen?
Schon mal danke, Galanos