Probleme update avec jointure tables

Résolu
nestor94 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   -  
nestor94 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un soucis de syntaxe (et aussi de compréhension) pour cet update que je veux réaliser.

 $sql = "SELECT contenant FROM membres WHERE id = :id";
  $pdostat = $bdd->prepare($sql);
  $pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
  $pdostat->execute();
  $resultat = $pdostat->fetch();
 
if (!empty($resultat )) { 
$contenant = $resultat['contenant'];

$sql = "UPDATE map.contenant  INNER JOIN  membres ON membres.contenant SET   membres.contenant =: map.contenant WHERE membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y";
 $pdostat = $bdd->prepare($sql);
 $pdostat->execute();
}	
?>


Syntax error or access violation: 1064 Erreur de syntaxe près de ': map.contenant WHERE membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y' à la ligne 1 in C:\wamp64

En fait, je veux remplacer le champ "contenant" dans map par le champ "contenant" de membres en fonction de pos_x et pos_y (membres)
A voir également:

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Le message d'erreur apparait car tu as mis deux points
: map.contenant 

Les deux points servent aux variables nommées .. ce qui n'est pas le cas ici !



Ensuite.. ben.. la syntaxe de ta requête sql est fausse....
Vu ce que tu décris, le WHERE est inutile .. par contre tu pourrais placer ces conditions dans la clause ON ( qui actuellement est fausse )

0
nestor94 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention  
 
Super, merci Jordane pour l'éclairage concernant les jointures et leur logique.
Voici la requète corrigée:

$sql = "UPDATE map  INNER JOIN  membres ON  membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y SET  map.contenant = membres.contenant ";

0