Bonjour, je voudrais faire en une seule requête ceci :

j'ai ces deux tables : restaurants, villes.

dans la table restaurants, j'ai le champ id_ville qui renseigne la ville dans laquelle se situe le restaurant.

Je voudrais sélectionner le id_ville de tous mes restaurants renseignés afin de basculer vers ma table villes et faire un update de ce type : update villes v set v.commerces=1 where v.commerces=0;

En français, toutes les villes qui comportent au moins un restaurant doivent prendre 1 au champ "commerces" de leur table.

J'ai essayé plusieurs trucs :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
UPDATE villes v 
SET v.commerces=1
WHERE v.commerce=0 
AND EXISTS (SELECT * FROM restaurants r WHERE r.id_ville=v.id);
Mais 0 enregistrement ne se trouve changé. Alors qu'il devrait y en avoir quelques uns.

(la 3e ligne est importante parce que si le champ est renseigné à 2 c'est que c'est un hôtel, et à ce moment là, on update pas.)

Merci