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 :

UPDATE et sous requêtes SQL 4


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut UPDATE et sous requêtes SQL 4
    Bonjour à tous,

    Je travaille avec SQL 4.1.9
    PhpMyAdmin 2.6.1

    Voilà mon soucis :

    Dans une table de liaison (donc sans identifiant), j'aimerais faire un update avec des conditions.

    Je m'explique j'ai la table : l_taux_commissionnement qui se compose comme suit :
    produit_id
    zone_com_id
    date_debut
    taux


    J'aimerais faire un update sur des enregistrements ayant un produit, une zone et la date la plus grande.

    Je fais donc (enfin j'essaye) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    UPDATE l_taux_commissionnement 
       SET date_fin = '2007-04-02' 
       WHERE produit_id =1 
           AND zone_com_id =1 
           AND date_debut = ( SELECT max( date_debut )
                                       FROM l_taux_commissionnement
                                       WHERE produit_id =1 )
    A chaque fois, il me met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1093 - You can't specify target table 'l_taux_commissionnement' for update in FROM clause
    Voilà, j'aimerais donc savoir si vous avez déjà eu ce problème et surtout comment s'en dépatouiller.

    Merci beaucoup

  2. #2
    Membre confirmé Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Points : 481
    Points
    481
    Par défaut
    Essayez avec des alias :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    UPDATE l_taux_commissionnement l1
       SET l1.date_fin = '2007-04-02' 
       WHERE l1.produit_id =1 
           AND l1.zone_com_id =1 
           AND l1.date_debut = ( SELECT max( l2.date_debut )
                                       FROM l_taux_commissionnement l2
                                       WHERE l2.produit_id =l1.produit_id )
    Je penche, donc je suis

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci, j'essaye cela tout de suite

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Même en y croyant très fort, cela a donné le même résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1093 - You can't specify target table 'l_taux_commissionnement' for update in FROM clause

  5. #5
    Membre confirmé Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Points : 481
    Points
    481
    Par défaut
    Alors MySQL 4.1.9 n'accepte pas cette syntaxe ... il va falloir contourner en utilisant un autre objet.
    N'ayant pas de base MySQL 4.1.9, mon chemin s'arrete ici, désolé
    Je penche, donc je suis

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Je comprends, sacré SQL 4 !!!

    Merci vraiment beaucoup à m'avoir ouvert les yeux.
    Je vais donc rechercher des chemins détournés.
    Je reviendrais poster ma solution pour ceux que ca intéresse.

    Merci encore

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bien, comme annoncé, j'ai du faire autrement : j'ai du créer une table temporaire .
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE TABLE tempo 
      SELECT max( date_debut ) as date_dbt
      FROM l_taux_commissionnement
      WHERE produit_id=1;
     
    UPDATE l_taux_commissionnement, tempo 
      SET date_fin='2007-04-02' 
      WHERE produit_id=1 
        AND zone_com_id=2 
        AND date_debut=tempo.date_dbt
    Merci encore !!!

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

Discussions similaires

  1. Requête Update avec Sous-requête
    Par Yohann_x dans le forum Requêtes
    Réponses: 8
    Dernier message: 16/02/2008, 13h19
  2. Update et sous-requête
    Par DidRider dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/07/2007, 19h50
  3. Sous-requêtes SQL pour ACCESS
    Par bastoon dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 28/08/2006, 21h41
  4. problème sous-requête SQL et order by
    Par aguest dans le forum Requêtes
    Réponses: 10
    Dernier message: 26/12/2005, 23h57
  5. Sous-requêtes SQL
    Par mandrake256 dans le forum WinDev
    Réponses: 6
    Dernier message: 21/06/2005, 10h15

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