Page 1 sur 1

UPDATE d'une table avec les valeurs d'une autres

Posté : 21 mai 2008, 17:36
par dredtrake
Bonjour a vous
J'ai une grosse table que je doit mettre a jour grâce a une autre table
en fait ma table principale est du type

Code : Tout sélectionner

-- Version du serveur: 5.0.51 -- Version de PHP: 5.2.5 CREATE TABLE `voyants` ( `id` int(11) NOT NULL auto_increment, `nameVoyant` varchar(30) collate utf8_unicode_ci NOT NULL default '', `textVoyant` text collate utf8_unicode_ci NOT NULL, `pictureVoyant` varchar(30) collate utf8_unicode_ci NOT NULL default '', `enable` int(1) NOT NULL default '0', `idCB` int(11) NOT NULL, `idAudio1` int(11) NOT NULL, PRIMARY KEY (`id`) )
et mon autre table

Code : Tout sélectionner

CREATE TABLE `voyants_id` ( `idVoyant` int(11) NOT NULL default '0', `idCB` int(11) NOT NULL default '0', `idAudio1` int(11) NOT NULL default '0', KEY `idVoyant` (`idVoyant`) )
j'ai donc rajouté les champs idCB, idAudio1, idAudio2 à la table voyants, mais je souhaiterai faire une requette me permettant de pouvoir copier les champs de la table voyants_id vers ma table voyants,
j'ai tenté diverse choses, mais je n'arrive a rien

Code : Tout sélectionner

UPDATE voyants SET var1_id=(SELECT idCB FROM voyants_id);
ou

Code : Tout sélectionner

UPDATE trucs SET var1_id=(SELECT idCB FROM voyants_id WHERE voyants.id=voyants_id.idVvoyant);
Bref je tourne pas mal en rond,
quelqu'un aurais-t-il une petite idée de comment m'y prendre?
merci par avance
bonne fin de journée a tous.. :D

Posté : 21 mai 2008, 21:49
par animithra
Bonsoir.

Une requête UPDATE sert - comme son nom l'indique - à mettre à jour un enregistrement existant.

Toi ce que tu souhaites c'est réaliser des copies d'une table à l'autre pas à mettre à jour une table.

Je te conseille plutôt de faire une requête de sélection de tous tes enregistrements dans la première table et de les insérer un par un dans ta seconde table.

**instant de bonté mais sans pour autant te mâcher le travail - on apprend en pratiquant - je te donne l'algorithme de cette partie du programme**
<?php

//connexion à la base de données
//sélection de la base

//requête de sélection de l'ensemble des résultats
//envoi de la requête au serveur SQL
//pour chaque résultat retourné par le serveur :
  //requête d'ajout dans la table2
  //envoi de la requête d'ajout
//fin pour

?>
Maintenant tu as tous les éléments qu'il te faut (exceptées les requêtes mais je te laisse relire une doc SQL si le besoin se fait sentir).

Bonne soirée et bonne progra !

Posté : 21 mai 2008, 23:17
par caroube
Il y a deux trucs bizarres dans ta requête :

1) tu fais un SET var1_id et il n'y a aucune colonne var1_id dans ta table voyant
2) il faut qu'il y ait un lien entre l'id de ta table voyants de l'update et l'idVoyant de ta table voyants_id du select

Code : Tout sélectionner

update voyants a set idCB = (select b.idCB from voyants_id b where a.id = b.idVoyant)
je viens de tester : ça marche !

Posté : 23 mai 2008, 11:50
par dredtrake
hello
donc ouii caroube, je me suis trompé a ce niveau là
sinon j'ai résolut mon pb j'ai fait ce que animithra m'a dit de faire, mais je l'ai fait en php avec des boucles et ca a fonctionné nickel!
merci a vous :P