2008-10-14 7 views
1

J'ai essayé plusieurs méthodes pour mettre à jour une colonne dans une table de base de données mySQL à partir d'une autre table mais je n'ai pas de chance.Mettre à jour la colonne d'une autre table - mySQL 3.5.2

J'ai lu quelque part que la version 3.5.2 ne supporte pas les mises à jour multi-tables et j'ai besoin d'une solution basée sur le code - est-ce correct?

Si personne ne peut me pointer dans la bonne direction en utilisant sql?

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

ou:

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 
+0

BTW, êtes-vous sûr que votre version est correcte? – Node

Répondre

2

Quand je utilisé pour utiliser MySQL qui ne supportait ni les sous-requêtes ni les mises à jour multi-tables, j'ai utilisé une astuce pour faire ce que vous décrivez. Exécutez une requête dont les résultats sont eux-mêmes des instructions SQL, puis enregistrez la sortie et exécutez-la en tant que script SQL. Par ailleurs, il n'existe pas de version MySQL 3.5.x pour autant que je sache. Je pense que vous avez peut-être signalé ce problème. Ou bien vous utilisez un autre produit tel que mSQL. J'ai oublié d'ajouter un point-virgule dans l'instruction SQL générée par la requête ci-dessus.

0

mises à jour multi-tables ne sont pas en charge MySQL < = 4.0.4 Je recommande fortement de mettre à jour votre serveur MySQL 5.0.xx

Questions connexes