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 :

Restriction qui ne fonctionne pas


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut Restriction qui ne fonctionne pas
    Bonjour tout le monde !!

    J'ai fais une requete qui permet de mettre a jour une date en fonction d'une autre avec une restriction sur un champ mais au lieu de ne traiter que la restriction, il efface la donnée du reste.

    Voila la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update comc set datefinprodplustard=(select datesouhaiteeplustard from achc where achc.codefourniprestto=comc.codearticleprestto and numeroachat='HA1') where numeroaffairefils='AFF1'
    HA1 a donc 2 lignes qui correspondent a l'affaire AFF1 mais seulement une ligne correspond a 'achc.codefourniprestto=comc.codearticleprestto' et cette ligne recupere bien la bonne date alors que l'autre ligne son champ date est effacé.

    Voyez vous d'où vient le problème ?

  2. #2
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Le problème, c'est que tu ne fais la corrélation ne se fait que dans le SET.
    En gros, ton périmètre de mise à jour est strictement déterminé par ta clause WHERE... donc quand le SET ne renvoie rien, il met à jour à NULL !

    Quel est ton SGBD ?

    La solution qui est sûre de marcher, c'est d'inclure la corrélation dans le WHERE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    UPDATE comc 
    SET datefinprodplustard=
        (SELECT datesouhaiteeplustard 
         FROM achc 
         WHERE achc.codefourniprestto=comc.codearticleprestto 
           AND numeroachat='HA1') 
    WHERE numeroaffairefils='AFF1'
      AND EXISTS (SELECT NULL
                  FROM achc 
                  WHERE achc.codefourniprestto=comc.codearticleprestto 
                    AND numeroachat='HA1')
    Tu remarqueras au passage que c'est plus facile à lire quand toute la requête ne tient pas en une seule ligne !

  3. #3
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut
    Oki ca marche bien. Il me semblait bien que c'etait le where qui provoquait cette erreur mais je ne savais pas comment lui indiquer qui ne fallait prendre en compte que les lignes ayant le meme codearticle.

    Désolé pour la requete en une ligne

    Merci

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

Discussions similaires

  1. Code qui ne fonctionne pas sur Mac
    Par malbaladejo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/01/2005, 11h08
  2. [SQL] Requête à jointure qui ne fonctionne pas
    Par Bensor dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/12/2004, 16h10
  3. Jointure externe qui ne fonctionne pas
    Par Guizz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/02/2004, 12h26
  4. CREATEFILEMAPPING qui ne fonctionne pas???
    Par Jasmine dans le forum MFC
    Réponses: 2
    Dernier message: 06/01/2004, 19h33
  5. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04

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