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 :

Problème avec requête de mise à jour


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Points : 148
    Points
    148
    Par défaut Problème avec requête de mise à jour
    Bonjour,

    La requête suivante me renvoie le message d'erreur "General SQL error.
    [IBM][CLI Driver][DB2/SUN] SQL0438N Application raised error with diagnostic text: "Pere inexistant ou fils non modifiable.
    Modification de SQL1.TA0BZG im". SQLSTATE=70002".

    Avez-vous une idée du problème ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    UPDATE SQL1.TA0BZG AS G
     
                     SET G.N_TRANCHE=(
     
                     SELECT D.N_TRANCHE
     
     
                     FROM SQL1.TA0BZD AS D, SQL1.TA0BZG AS G
     
                     WHERE (G.N_ASSEMBLE = D.N_ASSEMBLE )
     
                     AND (G.N_ASSEMBLE)=935
     
                     AND (G.Q_TITRES_VS_P>=D.N_TITRES_MIN)
     
                     AND (G.Q_TITRES_VS_P<=D.N_TITRES_MAX))
    ;
    Merci d'avance pour toute réponse.

  2. #2
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    A première vue, peut-être devrais tu renommer une de tes deux références à SQL1.TA0BZG en G2 (les deux ont l'alias "G")? Je ne suis pas sur du tout que ça soit la solution, mais ça vaut le coup d'essayer...

    Ce qui nous donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    UPDATE SQL1.TA0BZG AS G2
     
                     SET G2.N_TRANCHE=(
     
                     SELECT D.N_TRANCHE
     
     
                     FROM SQL1.TA0BZD AS D, SQL1.TA0BZG AS G
     
                     WHERE (G.N_ASSEMBLE = D.N_ASSEMBLE )
     
                     AND (G.N_ASSEMBLE)=935
     
                     AND (G.Q_TITRES_VS_P>=D.N_TITRES_MIN)
     
                     AND (G.Q_TITRES_VS_P<=D.N_TITRES_MAX))
    ;

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Points : 148
    Points
    148
    Par défaut
    Ca ne change rien.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Je ne sais pas si c'est pareil avec DB2 mais sous MySQL on ne peut pas utiliser la table que l'on modifie dans le SELECT qui délivre les valeurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE SQL1.TA0BZG AS G2
    SET G2.N_TRANCHE=(
      SELECT D.N_TRANCHE
      FROM SQL1.TA0BZD AS D, SQL1.TA0BZG AS G...
    Il faut d'abord faire la requête qui va donner les valeurs en passant par une table temporaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TEMPORARY TABLE tmp
    SELECT D.N_TRANCHE
    FROM SQL1.TA0BZD AS D, SQL1.TA0BZG AS G...;
    
    UPDATE SQL1.TA0BZG AS G2
    SET G2.N_TRANCHE=(
      SELECT D.N_TRANCHE
      FROM tmp...
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Points : 148
    Points
    148
    Par défaut
    Bon en fait j'ai trouvé il suffisait entre autres de rajouter une clause DISTINCT, la requête suivante fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    UPDATE SQL1.TA0BZG G
     
                     SET G.N_TRANCHE=
     
                     (
                     SELECT DISTINCT D.N_TRANCHE
     
                     FROM SQL1.TA0BZD D
     
                     WHERE (D.N_ASSEMBLE = 935)
     
                     AND (G.Q_TITRES_VS_P>=D.N_TITRES_MIN)
     
                     AND (G.Q_TITRES_VS_P<=D.N_TITRES_MAX)
                     )
     
                     WHERE G.N_ASSEMBLE = 935;
    Merci pour votre aide.

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

Discussions similaires

  1. [MySQL-5.5] Problème avec une requête de mise à jour entre deux tables
    Par hermes1383 dans le forum Requêtes
    Réponses: 1
    Dernier message: 10/11/2014, 10h52
  2. [MySQL] Problème avec requete de mise à jour
    Par runcafre91 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 31/07/2012, 01h01
  3. Problème avec threads après mise à jour
    Par issoram dans le forum Modules
    Réponses: 2
    Dernier message: 20/05/2009, 12h18
  4. Réponses: 2
    Dernier message: 24/01/2008, 13h41
  5. Problème avec une requête de mise à jour
    Par Le Pharaon dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/07/2006, 12h16

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