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

Administration MySQL Discussion :

Update avec un select sur la même table


Sujet :

Administration MySQL

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut Update avec un select sur la même table
    Bonjour,

    Dans une application, avant d'effectuer une suppression de données dans une table, je génère un fichier de sauvegarde formaté sous forme d'INSERT afin de pouvoir facilement réinsérer les données en cas d'erreur ou de fausse manip.

    Cependant, je rencontre un problème, c'est qu'il n'est pas possible de faire un SELECT dans la requête d'INSERT sur la même table.
    La doc le précise :
    http://dev.mysql.com/doc/refman/5.0/...ry-errors.html

    Et comme il faut que je sélectionne la valeur max d'une colonne dans mon insertion, je suis un peu ennuyé.

    La requête abrégée :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO T1(id, titre, ordre) 
    VALUES(3, 'le titre', 
    (SELECT COALESCE(MAX(ordre), 1) + 1 FROM T1));

    Me retourne donc cette erreur.

    Quelqu'un connaitrait t-il une parade à cette lacune ?

    Merci.

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Bonsoir, je tente un petit up, au cas où quelqu'un aurait une idée.

    Pour l'instant, j'ai trouvé une soluce en utilisant une variable utilisateur qui me permet de stocker le maximum de la colonne de la table, mais si une autre solution vous semble possible, je suis preneur

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    tu peux mettre un select dans un insert ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO T1(id, titre, ordre) 
    SELECT(3, 'le titre',COALESCE(MAX(ordre), 1) + 1)
    FROM t1
    si si..

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Elle n'est pas valide cette syntaxe

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Oui il faut que tu mette le t1 en majuscule comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO T1(id, titre, ordre) 
    SELECT(3, 'le titre',COALESCE(MAX(ordre), 1) + 1)
    FROM T1
    sinon, je te garantis que la synthaxe est bonne et que l'on peut faire un select dans un insert. J'ai eut récemment à l'utiliser pour un traitement sur plusieurs tables. N'hésites pas à poursuivre dans cette direction.


  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Mais non elle n'est pas valide cette syntaxe.

    Celle étant valide est celle que j'ai mise dans mon 1er post, et qui n'est pas possible de faire puisque INSERT et SELECT sur la même table.

    Merci quand même

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

Discussions similaires

  1. update avec sous requête sur la même table
    Par beyo dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/11/2012, 14h21
  2. Requête update avec un select sur la même table
    Par sheira dans le forum Requêtes
    Réponses: 6
    Dernier message: 15/09/2010, 16h09
  3. UPDATE avec SELECT sur la même table
    Par Invité dans le forum Langage SQL
    Réponses: 7
    Dernier message: 07/12/2007, 03h39
  4. [SQL]Requete avec 2 count(*) sur la même table
    Par Sonny dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/11/2005, 16h41
  5. pb d'insertion avec un SELECT sur une autre table
    Par epeichette dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/01/2005, 22h58

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