Souci de jointures et multiples tables ...

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

$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é :

[
$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 ....

4 réponses

BennerBenner Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour,
Un update sur une table contenant un joint
dois avoir cette syntaxe:

update a
set a.colonne = 'blabla'
from table1 a
join table2 b
on a.id = b.id
where b.telchose = 'telaffaire'


Donc je n'ai pas testé l'output de $data2 mais ca doit ressembler a cela:

$data2 = "UPDATE p
SET p.points_status = 3
FROM " . TABLE_CUSTOMERS_POINTS_PENDING . " p JOIN " . TABLE_ORDERS_STATUS_HISTORY . " o ON p.orders_id = o.orders_id WHERE o.orders_status_id = 100000";

Bonne soiree
0
yopiman29
 
Merci beaucoup de ta réponse, j'avance mais j'ai une erreur de syntaxe ....
as tu une idée du truc ?
encore merci

voila ma nouvelle requete :

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


et mon erreur :

Erreur SQL !

UPDATE p SET p.points_status = 3 FROM customers_points_pending p JOIN orders_status_history o ON p.orders_id = o.orders_id WHERE o.orders_status_id = 100000
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM customers_points_pending p JOIN orders_status_history o ON p.orders_id = o.' at line 3
0
Utilisateur anonyme
 
Bonjour

Tu as une erreur de syntaxe parce que la syntaxe que t'a proposée BennerBenner est incorrecte.
Regarde la manuel :
https://dev.mysql.com/doc/refman/5.7/en/update.html
La syntaxe que tu utilisais au départ m'avait l'air correcte. Pourquoi dis-tu qu'elle ne fonctionne pas ? Quel message d'erreur avais-tu ?

Si tu comptais sur
$datas = ($request);
echo  $datas;

pour t'afficher quelque chose, je te signale que cet affichage est un peu farfelu. Le mysql_query te rend un simple "true", on se demande à quoi sert la variable $data, et l'affichage d'une variable true se traduit par un simple 1.
0
yopiman29
 
Merci de ta réponse, en effet tout était ok de mon coté je ne comprenais plus rien a tout ça du coup ...
Aujourd'hui ca fonctionne, hier sans message ca me faisait une boucle infinie ... et puis zou ... tout est ok

merci a vous deux d'avoir répondu et pour les infos !

Bonne soirée
Vincent
0