8768 sujets

Développement web côté serveur, CMS

bonjour,
je cherche à construire une requête pour mettre à jour un table à l'aide d'un autre
UPDATE table_1  
SET table_1.prix=table_2.prix
WHERE table_1.id = table_2.id 

erreur -> Unknown column table_2.id
merci d'avance
Ta requête ne spécifie pas d’id, je suppose donc que tu veux dupliquer toute la table.

Tu peux le faire ainsi :
INSERT INTO table_1 SELECT * FROM table_2 ;
adrien881 a écrit :
Ta requête ne spécifie pas d’id, je suppose donc que tu veux dupliquer toute la table.

Tu peux le faire ainsi :
INSERT INTO table_1 SELECT * FROM table_2 ;

merci pour ta réponse
le but n'est pas de dupliquer une table, mais appliquer un UPDATE,
j'ai réussi à la mettre à jour les champs grâce à un paté de ligne code
Modérateur
Bonjour,

Avec une sous-requête, ça fonctionne bien sur SQL Server :


UPDATE tblTableA
SET Prix = (SELECT tblTableB.Prix FROM tblTableB WHERE tblTableB.ID = tblTableA.ID)
smith a écrit :
bonjour,
je cherche à construire une requête pour mettre à jour un table à l'aide d'un autre
UPDATE table_1  
SET table_1.prix=table_2.prix
WHERE table_1.id = table_2.id 

erreur -> Unknown column table_2.id
merci d'avance
update table_1, table_2

le reste ne bouge pas. Smiley cligne
Tony Monast a écrit :
Bonjour,

Avec une sous-requête, ça fonctionne bien sur SQL Server :


UPDATE tblTableA
SET Prix = (SELECT tblTableB.Prix FROM tblTableB WHERE tblTableB.ID = tblTableA.ID)

Merci pour l'astuce Smiley smile
Lothindil a écrit :
update table_1, table_2

le reste ne bouge pas. Smiley cligne

ça met à jour toutes les colonnes qui portent le même nom? très bon à savoir
ça permet surtout de prendre en compte deux tables; c'est pour ça que j'ai dit que le reste ne bougeait pas. La requête totale c'est donc :

UPDATE table_1, table_2
SET table_1.prix=table_2.prix
WHERE table_1.id = table_2.id 


J'ai jamais tenté de mettre à jours toutes les colonnes portant le même nom sans les spécifier par contre. Mais ça permet même d'aller plus loin, genre :

UPDATE table_1, table_2
SET table_1.prix=table_2.prix, table_1.code='".$foo."', table_2.description='".$bar."'
WHERE table_1.id='".$idvar."' AND table_1.id = table_2.id 


Et en s'amusant un peu y a même moyen de jouer avec des left et des right joins ^^