Faire une jointure entre deux tables. [Résolu]

-
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 :
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
Afficher la suite 

2 réponses

Messages postés
26602
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
13 septembre 2019
5476
0
Merci
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
jee pee
Messages postés
26602
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
13 septembre 2019
5476 > 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)
Commenter la réponse de jee pee
Messages postés
8519
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 septembre 2019
422
0
Merci
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)
jee pee
Messages postés
26602
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
13 septembre 2019
5476 > Claudy -
as-tu bien pris ma version corrigée :
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)
Par contre je ne vois pas de table bis
jee pee
Messages postés
26602
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
13 septembre 2019
5476 > Claudy -
bis voulait dire que dans la version de départ la table wppavm_posts était citée 2 fois
J'ai pris ta dernière réponse et ça fonctionne parfaitement.
Je te remercie beaucoup tu m'a vraiment retiré une épingle du pied.
Merci encore, cordialement
Claudy
jee pee
Messages postés
26602
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
13 septembre 2019
5476 > Claudy -
nous sommes heureux d'avoir pu t'aider
Commenter la réponse de yg_be