Jointure a n'y rien comprendre

totopasbo
Invité n'ayant pas de compte PHPfrance

16 déc. 2015, 23:51

Bonjour,

Bonsoir,

J'ai besoin de faire un update par tache cron d'un champ d'une table
J'ai suivi tous les exemples possibles, j'en suis là mais tout tourne sans fin ...

Mes besoin : prendre sur les deux tables l'id d'une commande (id similaire) pour faire le lien entre le champ voulu

ensuite sur une des tables, prendre la référence 100000 pour faire un update de l'autre table dans un autre champ (valeur 3 ici) ...

Ca ne fonctionne pas, help !

Merci a tous :)

Code : Tout sélectionner

$data2 = "UPDATE " . TABLE_CUSTOMERS_POINTS_PENDING . " p , " . TABLE_ORDERS_STATUS_HISTORY . " o SET p.points_status = 3 WHERE p.orders_id = o.orders_id and o.orders_status_id = 100000"; $request = mysql_query($data2) or die('Erreur SQL !<br>'.$data2.'<br>'.mysql_error()); $datas = ($request); echo $datas;
J'ai aussi essayé :

Code : Tout sélectionner

$data2 = "UPDATE " . TABLE_CUSTOMERS_POINTS_PENDING . " p JOIN " . TABLE_ORDERS_STATUS_HISTORY . " o ON p.orders_id = o.orders_id SET p.points_status = 3 WHERE o.orders_status_id = 100000"; $request = mysql_query($data2) or die('Erreur SQL !<br>'.$data2.'<br>'.mysql_error()); $datas2015 = ($request); echo $datas2015;
snif ....

Eléphant du PHP | 243 Messages

17 déc. 2015, 01:07

Salut,
"UPDATE ".TABLE_CUSTOMERS_POINTS_PENDING."
 SET points_status = 3
 WHERE orders_id IN (SELECT orders_id 
                     FROM ".TABLE_ORDERS_STATUS_HISTORY."
                     WHERE orders_status_id = 100000);"
Je pense que ceci devrait fonctionner.

Belle soirée.
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini