Souci de jointures et multiples tables ...

Fermé
yopiman29 - 16 déc. 2015 à 22:47
 yopiman29 - 17 déc. 2015 à 18:06
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 mardi 8 décembre 2015 Statut Membre Dernière intervention 17 décembre 2015 3
17 déc. 2015 à 02:28
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
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
17 déc. 2015 à 17:23
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
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