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

Eléphanteau du PHP | 29 Messages

21 mai 2008, 17:36

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

Eléphant du PHP | 174 Messages

21 mai 2008, 21:49

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 !
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

Eléphant du PHP | 422 Messages

21 mai 2008, 23:17

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 !

Eléphanteau du PHP | 29 Messages

23 mai 2008, 11:50

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