Jump to content

SQL update avec un select


Recommended Posts

Bonjour à toutes et à tous !

 

J'essaye de remplacer la description d'un produit par celle d'un autre en SQL, j'ai écris la requête suivante :

 

UPDATE ps_product_lang SET description=(select description from ps_product_lang where id_product=9)
WHERE id_product=8
LIMIT 1 ;
 
Apparemment c'est interdit, j'ai donc cherché d'autres pistes comme les tables dérivées :
 
UPDATE ps_product_lang.t1
SET description.t1 = (SELECT description.t2 FROM ps_product_lang.t2 WHERE id_product.t2 = 9)
WHERE id_product.t1=8
 
erreur 1142, UPDATE command denied to user : mais j'ai tous les droits.

 

 

J'ai vu un truc sur le CTE, j'ai écris cela :

 

USE nombdd;
GO
WITH ps_product_lang_cte (description)
AS
(
  SELECT description AS test
  FROM ps_product_lang
  WHERE description = 9
)
UPDATE ps_product_lang AS test
SET description = description AS test
WHERE description = 8;
GO
 
Erreur de syntaxe.
 
Je patauge depuis plusieurs jours, si quelqu'un connait un peu le SQL et l'utilisation d'un select dans un update :(
Pitié ? :P
Edited by tchuss (see edit history)
Link to comment
Share on other sites

Bonjour,

 

Dans cette requête, j'imagine que tu as plusieurs langues et quand ce que tu sélectionnes te revoie plusieurs lignes.

 

Il faut écrire autant de requête que de langue et en indiquant l'id de la langue des 2 côtés

 

 

Bonjour à toutes et à tous !

 

J'essaye de remplacer la description d'un produit par celle d'un autre en SQL, j'ai écris la requête suivante :

 

UPDATE ps_product_lang SET description=(select description from ps_product_lang where id_product=9)
WHERE id_product=8
LIMIT 1 ;
Link to comment
Share on other sites

J'utilise pas le multilingue, et j'ai trouvé une astuce gourmande en ressources mais pour le moment ça me permet d'avancer. Je crée une table temporaire et je la détruis ensuite :

 

CREATE TABLE ps_product_lang_t1 LIKE ps_product_lang;
INSERT INTO ps_product_lang_t1 SELECT * FROM ps_product_lang;
 
UPDATE ps_product_lang
SET description = (SELECT description FROM ps_product_lang_t1 WHERE id_product = 9)
WHERE id_product=8;
 
DROP TABLE ps_product_lang_t1;
 
J'essayais d'éviter ce genre de pratique, avoir un code plus élégant...
 
Une idée ?
Edited by tchuss (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...