Probleme update avec jointure tables [Résolu]

Signaler
Messages postés
56
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
8 avril 2021
-
Messages postés
56
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
8 avril 2021
-
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)

2 réponses

Messages postés
32045
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 avril 2021
3 382
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 )

Messages postés
56
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
8 avril 2021

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 ";