Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/01/2012, 19h50   #1
Membre du Club
 
Avatar de ForgetTheNorm
 
Homme
Docteur en informatique
Inscription : novembre 2006
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Docteur en informatique
Secteur : Enseignement

Informations forums :
Inscription : novembre 2006
Messages : 124
Points : 43
Points : 43
Par défaut Modifier plusieurs lignes à l'aide d'une sous-table

Bonjour à tous

J'ai à ma disposition une base de données qui gère un forum, avec des utilisateurs et des posts. J'aimerai mettre à jour l'intégralité des colonnes des utilisateurs avec une colonne "user_posts", qui dénote le nombre de posts de chaque utilisateur.

Je peux récupérer ces nombres via la requête
Code :
1
2
3
SELECT user_id, COUNT(post_id) AS user_posts 
FROM posts 
GROUP BY user_id
Je sais modifier plusieurs lignes avec une valeur, avec UPDATE ou REPLACE.
Cependant, je n'arrive pas à "joindre les deux bouts", pour insérer une valeur différente sur chaque ligne, en faisant correspondre le "user_id" de la table des utilisateurs et le "user_id" de la table générée.

Pouvez-vous me guider ?

Pierre
ForgetTheNorm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 11h49   #2
Membre régulier
 
Inscription : juillet 2003
Messages : 83
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 83
Points : 90
Points : 90
bonjour,

peux tu essayer cette requête ?

Code :
1
2
3
4
5
6
 
UPDATE 
users U,
(SELECT user_id, COUNT(post_id) user_posts FROM posts GROUP BY user_id) C
SET U.user_posts = C.user_posts
WHERE U.user_id = C.user_id
Cordialement

selecta
selecta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 14h23   #3
Membre du Club
 
Avatar de ForgetTheNorm
 
Homme
Docteur en informatique
Inscription : novembre 2006
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Docteur en informatique
Secteur : Enseignement

Informations forums :
Inscription : novembre 2006
Messages : 124
Points : 43
Points : 43
Citation:
Envoyé par selecta Voir le message
bonjour,
Code :
1
2
3
4
5
6
 
UPDATE 
users U,
(SELECT user_id, COUNT(post_id) user_posts FROM posts GROUP BY user_id) C
SET U.user_posts = C.user_posts
WHERE U.user_id = C.user_id
selecta
Bonjour

C'est parfait, merci beaucoup ! Il fallait donc faire une jointure basique avec un WHERE.

Pierre
ForgetTheNorm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 20h39   #4
Membre régulier
 
Homme Francis Lennert
Développeur informatique
Inscription : novembre 2011
Messages : 52
Détails du profil
Informations personnelles :
Nom : Homme Francis Lennert
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2011
Messages : 52
Points : 86
Points : 86
Et bien je ne trouve pas cela si basique et suis très content de cette solution.
Grandal est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h46.


 
 
 
 
Partenaires

Hébergement Web