Mysql - requette entre 2 tables

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mysql - requette entre 2 tables

par joker33 » 29 oct. 2005, 12:33

Vaedan , comment je peu faire avec un left jiont, tu peux me donner un exemple ?

par joker33 » 29 oct. 2005, 09:59

Merci à tous !
en Fait voici en detail ce que je cherche a faire

j'ai une table (annuaire) qui contient les infos du webmaster (nick, email, pas de mot de passe) --> table2 dans l'exemple precedent

que je dois convertir en 2 tables :

table1 --> Table des sites
table3 --> Table des Webmaster
voila comment je pense proceder :
1/ j'ai crée la table webmasters (table3) avec .

2/ j'ajoute à l'ancienne table (table2) un champ user_id

3/ met a jour l'ancienne table (table2) comme suit :
UPDATE table2 SET
table2.user_id = table3.id_webmaster WHERE table2.nick=table3.username

4/ je dois ensuite recuperer les infos relatives qu Sites dans la table2
pour mettre a jour la table1
INSERT INTO table1 SET
table2.user_id--> table1.id_webmaster,
table2.url--> table1.url,
table2.titre--> table1.titre
etc ..

Voila, qu'elle est selon vous la meilleure procedure ?
je precise que ce script est executé trés occasionellement
Meric a tous :)

par Vaedan » 29 oct. 2005, 09:12

Je te ne conseille pas du tout cette méthode ! en effet, elle est relativement couteux au niveu du serveur MySQL. Va voir du coté de JOIN.

par tanoor » 29 oct. 2005, 03:07

Considère le code ci-dessous comme du pseudo-code mais si tu l'adapte, il devra faire.



select
table1.id as table1_id,
table2.id as table2_id
FROM
table1,
table2
WHERE
table1.username = table2.nick

Je suppose en suite que tes valeurs sont dans un tableau associatif.
Construisons ce tableau

$rows = array();
while ($row = mysql_fetch_assoc()) {
$rows []= $row;

}

foreach ($rows as $row) {
//Fonction qui met à jour tes id
updateId($row['table1_id'], $row['table2_id']);
}


function updateId($id1, $id2) {
//Requete sql
$sql = 'INSERT INTO table2(user_id) values ' . intval($id1) . ' WHERE id = ' . inval($id2);
//Execute cette requete
}

Mysql - requette entre 2 tables

par joker33 » 29 oct. 2005, 02:09

Bonsoir à tous !,
voici mon probleme :
Je souhaite mettre à jour une table avec le contenu d'une autre :

j'ai donc :
table1 (table source)
ID (auto_increment,index)
username

table2 (table destination)
ID (auto_increment,index)
nick
userId

je souhaite ajouter dans le champ userId de la table 2
la valeur du champ ID de la table 1, avec comme condition
table2.nick = table1.username

je ne sais pas si c'est trés clair ?

merci de votre aide :)