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 :

SQL WHERE EXISTS


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 9
    Par défaut SQL WHERE EXISTS
    Bonjour,

    Je suis en train d'essayer d'écrire une requête de mise à jour en SQL.
    Cependant je rencontre un problème :
    Lorsque j'écris la requête de cette manière

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE Vendeur INNER JOIN Secteur ON Vendeur.Num_secteur=Secteur.Num_secteur SET fixe = fixe*1.04
    WHERE Nom_secteur="est" OR Nom_secteur="sud";
    j'obtiens les modifications souhaitées

    Lorsque j'écris la requête de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE vendeur SET fixe = fixe*1.04
    WHERE EXISTS (SELECT * FROM secteur WHERE vendeur.num_secteur=secteur.num_secteur AND secteur.nom_secteur ="est" OR secteur.nom_secteur ="sud");
    Tous les enregistrements se mettent à jour et pas seulement les enregistrements des vendeurs "est" et "sud".
    Mon "or" pose problème !

    Comment écrire la requête avec where exists pour obtenir le même résultat que dans la 1ère solution ?

    Bonne réception et merci de votre aide.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 143
    Par défaut
    C'est une question de précédence des opérateurs logiques... Le AND est plus fort que le OR.

    Ta condition est évaluée ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WHERE   (   vendeur.num_secteur = secteur.num_secteur 
            AND secteur.nom_secteur = 'est')
        OR  secteur.nom_secteur = 'sud'
    Il te faut donc ajouter des parenthèses au bon endroit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WHERE   vendeur.num_secteur = secteur.num_secteur 
        AND (   secteur.nom_secteur = 'est'
            OR  secteur.nom_secteur = 'sud')
    Tu pourrais d'ailleurs simplifier en utilisant l'opérateur IN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE   vendeur.num_secteur=secteur.num_secteur 
        AND secteur.nom_secteur IN ('est', 'sud')
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 9
    Par défaut
    Super ça marche !!!
    J'avais essayé les parenthèses mais pas au bon endroit !

    Mille Mercis !!!

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

Discussions similaires

  1. [SQL] Where Champ1 = 1 or champ = 2
    Par valoji dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/04/2006, 15h06
  2. [ASE][SQL]WHERE non pris en compte
    Par Benjamin78 dans le forum Sybase
    Réponses: 1
    Dernier message: 24/03/2006, 12h00
  3. [MySQL] SQL + champs existant
    Par nicordi dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/03/2006, 04h56
  4. Réponses: 1
    Dernier message: 08/11/2005, 14h32
  5. [SQL - ASP] existance d'une table
    Par Larson dans le forum ASP
    Réponses: 4
    Dernier message: 02/06/2004, 10h41

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