Bonjour,
J'utilise tout le temps des jointures dans mes requêtes en PDO, et puis j'ai voulu faire un update sur le même principe avec LEFT JOIN et la bing cela ne marche pas j'ai utilisé Google et malgré les résultats je ne trouve pas le bonheur, sur le site de MYSQL il ne parle même pas des updates en jointure sans pdo du moins.

En gros pour le SELECT pas de problème :
$db = connexion base ...
$q = $db->prepare('SELECT p.id,p.title,c.cat_title FROM pages as p LEFT JOIN categories as c WHERE p.id='2'');
$q->execute();
$d = $q->fetch(PDO::FETCH_OBJ);
echo $d->id.$d->title.$d->cat_title;

Pour l'update avec le même principe :
$q = $db->prepare('UPDATE page as p LEFT JOIN categories as c SET p.title=:p.title,c.cat_title=:c.cat_title WHERE p.id='2'');
$q->bindValue(':title',$title,PDO::PARAM_STR);
$q->bindValue(':cat_title',$cat_title,PDO::PARAM_STR);
$q->execute();

Pourriez-vous m'orienter ?

1 réponse


voila ce que j'ai trouver

Si vous avez deux tables possédant une clé commune (dans le cas ci-dessous il s'agit de la clé primaire "id"), il est possible de mettre à jour un champ d'une des deux tables (update_table) grâce aux données de la seconde (reference_table) à l'aide d'une jointure.

Le code SQL ressemble à celui-ci :

UPDATE update_table, reference_table SET update_table.field=reference_table.fieldref WHERE update_table.id=reference_table.id