Faire une jointure entre deux tables.
Résolu
Claudy
-
jee pee Messages postés 9441 Date d'inscription Statut Modérateur Dernière intervention -
jee pee Messages postés 9441 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
Voici mon problème,
Je fais la requête sql suivante sur la table `wppavm_postmeta` afin de récupérer la valeur post_id :
Et voici le résultat :
Je transfère ensuite les valeurs de post_id dans les requêtes suivantes pour la table `wppavm_posts` afin de changer la valeur de `post_status` :
Cela fonctionne parfaitement, mais serait-il possible de faire tout-ceci automatiquement dans une seule requête? Sachant que les résultats post_id sont à chaque fois différents et leurs quantités également.
Avec mes remerciements
Claudy
Voici mon problème,
Je fais la requête sql suivante sur la table `wppavm_postmeta` afin de récupérer la valeur post_id :
SELECT * FROM `wppavm_postmeta` WHERE `meta_key` LIKE '_awpcp_extra_field[4]' AND `meta_value` <= subdate(now(),1)
Et voici le résultat :
meta_id post_id meta_key meta_value
7327 2617 _awpcp_extra_field[4] 2019/08/24
9638 2748 _awpcp_extra_field[4] 2019/08/24
9669 2765 _awpcp_extra_field[4] 2019/08/24
9709 2767 _awpcp_extra_field[4] 2019/08/24
Je transfère ensuite les valeurs de post_id dans les requêtes suivantes pour la table `wppavm_posts` afin de changer la valeur de `post_status` :
UPDATE `wppavm_posts` SET `post_status` = 'trash' WHERE `wppavm_posts`.`ID` = 2617; UPDATE `wppavm_posts` SET `post_status` = 'trash' WHERE `wppavm_posts`.`ID` = 2748; UPDATE `wppavm_posts` SET `post_status` = 'trash' WHERE `wppavm_posts`.`ID` = 2765; UPDATE `wppavm_posts` SET `post_status` = 'trash' WHERE `wppavm_posts`.`ID` = 2767;
Cela fonctionne parfaitement, mais serait-il possible de faire tout-ceci automatiquement dans une seule requête? Sachant que les résultats post_id sont à chaque fois différents et leurs quantités également.
Avec mes remerciements
Claudy
2 réponses
-
Bonjour,
Avec par exemple :UPDATE `wppavm_posts` SET `post_status` = 'trash' WHERE `wppavm_posts`.`ID` IN (SELECT post_id FROM `wppavm_postmeta` WHERE `meta_key` LIKE '_awpcp_extra_field[4]' AND `meta_value` <= subdate(now(),1) )
-
Je te remercie pour ta réponse rapide.
J'ai fait l'essai "Select" qui fonctionne.
Par contre "UPDATE" me renvoie l'erreur suivante:
MySQL a répondu : Documentation
#1064 - Erreur de syntaxe près de 'FROM
wppavm_posts
JOIN wppavm_postmeta ON wppavm_posts.ID = wppavm_po' à la ligne 5
Cde
Claudy- C'est sur le post de yg_be que tu aurais du répondre. Enlève le from et la table bis
UPDATE wppavm_posts JOIN wppavm_postmeta ON wppavm_posts.ID = wppavm_postmeta.post_id SET post_status = 'trash' WHERE wppavm_postmeta.meta_key = '_awpcp_extra_field[4]' AND wppavm_postmeta.meta_value <= subdate(now(),1)
-
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, peut-être:UPDATE wppavm_posts SET post_status = 'trash' FROM wppavm_posts JOIN wppavm_postmeta ON wppavm_posts.ID = wppavm_postmeta.post_id WHERE wppavm_postmeta.meta_key = '_awpcp_extra_field[4]' AND wppavm_postmeta.meta_value <= subdate(now(),1)
pour tester, tu peux peut-être d'abord faire:select * FROM wppavm_posts JOIN wppavm_postmeta ON wppavm_posts.ID = wppavm_postmeta.post_id WHERE wppavm_postmeta.meta_key = '_awpcp_extra_field[4]' AND wppavm_postmeta.meta_value <= subdate(now(),1)