IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Select d'une table pour update d'une autre table


Sujet :

Langage SQL

  1. #1
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 354
    Points : 410
    Points
    410
    Par défaut Select d'une table pour update d'une autre table
    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

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Je ne vois pas d'erreur dans votre requête, vérifiez vos données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select *
      from villes v
     where v.commerce = 0
       AND EXISTS (SELECT null FROM restaurants r WHERE r.id_ville=v.id);
    Ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select v.*
         , case when exists (select null from restaurants r WHERE r.id_ville=v.id) then 1 end as resto
      from villes v

  3. #3
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 354
    Points : 410
    Points
    410
    Par défaut
    je crois que vous avez raison

    autant pour moi, désolé !

    Et merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. SELECT de deux tables pour INSERT dans une troisième
    Par vinsse2001 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 14/02/2013, 11h08
  2. Réponses: 2
    Dernier message: 21/10/2010, 10h15
  3. Réponses: 9
    Dernier message: 30/01/2008, 15h40
  4. insertion dans une table puis update dans une autre table
    Par uptoditime dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/10/2007, 18h08
  5. [ODBC] Récupération d'une donnée pour insertion dans une autre table
    Par rom950 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/03/2006, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo