Frage

Ich habe ein paar Ansätze versucht, eine Spalte in einer mySQL-Datenbank-Tabelle aus einer anderen Tabelle zu aktualisieren, aber habe kein Glück.

ich irgendwo, dass die Version 3.5.2 nicht lese Multi-Table-Updates unterstützt, und ich brauche eine Code-basierte Lösung - ist das richtig

Wenn nicht jemand mich in der richtigen Richtung sql zeigen kann?

UPDATE products SET products_ordered = (
    SELECT SUM(products_quantity) 
    FROM orders_products 
    WHERE products_id = products.products_id
);

oder:

Create temporary table my_temp_table
as
SELECT products_id, SUM(products_quantity) as total 
FROM orders_products 
GROUP BY products_id 

UPDATE products, my_temp_table
SET products.products_ordered = my_temp_table.total 
WHERE products.products_id = my_temp_table.products_id
War es hilfreich?

Lösung

Wenn ich verwende MySQL verwenden, die weder Unterabfragen oder Multi-Table-Updates unterstützt hat, habe ich einen Trick zu tun, was Sie beschreiben. Führen Sie eine Abfrage, deren Ergebnisse sich SQL-Anweisungen, und dann speichern Sie die Ausgabe und das als SQL-Skript ausgeführt werden.

SELECT CONCAT( 
  'UPDATE products SET products_ordered = ', 
   SUM(products_quantity), 
  ' WHERE product_id = ', products_id, ';') AS sql_statement
FROM orders_products
GROUP BY products_id;

By the way, gibt es keine solche Version MySQL 3.5.x soweit ich weiß. Ich denke, man kann das falsch berichtet haben. Oder aber Sie verwenden ein anderes Produkt wie mSQL.

Edit:. Ich habe vergessen, ein Semikolon in die SQL-Anweisung von der Abfrage oben erzeugt hinzuzufügen

Andere Tipps

Multi-Table-Updates unterstützen, werden nicht in MySQL <= 4.0.4 Ich würde empfehlen, Ihren Server zu MySQL 5.0.xx zu aktualisieren

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top