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

SQL Procédural MySQL Discussion :

PB avec les fonctions update/replace


Sujet :

SQL Procédural MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1
    Par défaut PB avec les fonctions update/replace
    Bonjour à toutes et à tous,

    J'ai un souci avec ces fonctions
    Dans ma rubrique 'Intitulé' J'ai des occurrences qui contiennent la valeur 'Tarif 1' que je dois remplacer par 'Tarif 2' sous certaine conditions.
    Le but étant bien evidemment de ne pas toucher au reste des caractères.
    C'est pourquoi j'ai trouver la fonction REPLACE tres interressante.
    Je vous donne un exemple de ce que je peux avoir dans le champs 'Intitule' :
    Tarif 1 : chaussure
    bonnet: Tarif 1

    Voici ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE ECRITURE SET Intitule = REPLACE(Intitule, "Tarif 1","Tarif 2")
    WHERE IDPiece IN (SELECT DISTINCT IDPiece 
      FROM ECRITURE 
      WHERE CodeJournal='001' AND CompteAuxiliaire > '' AND MontantDebit < 100
    )
    et l'erreur retourné par MySQL 4.1
    #1093 - You can't specify target table 'ecriture' for update in FROM clause

    Pourtant cette requete là ne retourne pas d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT REPLACE(Intitule, "Tarif 1","Tarif 2") FROM ECRITURE
    WHERE IDPiece IN (SELECT DISTINCT IDPiece 
      FROM ECRITURE 
      WHERE CodeJournal='001' AND CompteAuxiliaire > '' AND MontantDebit < 100
    )
    Merci d'avance

  2. #2
    Membre éprouvé Avatar de giltonic
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 109
    Par défaut
    le message me laisse penser que tu ne peux pas mettre a jour une cette table parce qu'elle apparait dans le select apres.
    Essaye de recopier ca dans une table tempo que tu vireras apres.

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Par défaut
    Tu ne peux pas à la fois lire et écrire dans la même table, parce que MySQL ne sait pas s'il doit lire la version modifiée ou non modifiée.

    Ceci dit, ta requête est inutilement compliquée. Celle-ci doit suffire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE ECRITURE 
    SET Intitule = REPLACE(Intitule, 'Tarif 1','Tarif 2')
    WHERE CodeJournal='001' 
      AND CompteAuxiliaire > '' 
      AND MontantDebit < 100

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

Discussions similaires

  1. Problèmes avec les fonctions et replace
    Par Tommyl dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 01/12/2006, 21h34
  2. problème avec les fonctions MidStr et LeftStr
    Par timsah dans le forum C++Builder
    Réponses: 1
    Dernier message: 07/02/2006, 10h07
  3. Réponses: 2
    Dernier message: 10/05/2005, 10h58
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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