Faire une jointure entre deux tables.

Résolu
Claudy -  
-
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

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) ) 

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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)
0