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

Requêtes MySQL Discussion :

select max dans un insert


Sujet :

Requêtes MySQL

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut select max dans un insert
    Je pige pas pourquoi

    INSERT INTO message (id_message,text,lang,ref_type) VALUES ((select max(id_message) + 1 from message),'Berline',1,2);

    n est pas accepté :/

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    1/ Quel est ton message d'erreur ?

    2/ tu n'as pas besoin de faire ça, il suffit de mettre ton id en auto_increment
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO message (id_message,text,lang,ref_type) 
    VALUES ((select max(id_message) + 1 from message),'Berline',1,2);
    Cette requête peut être simplifiée en utilisant INSERT SELECT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO message (id_message,text,lang,ref_type) 
    SELECT max(id_message)+1, 'Berline', 1, 2 
    FROM message
    Cependant, il est préférable de déclarer les identifiants des tables en tant que AUTO_INCREMENT.

    La requête deviendrait alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO message (text,lang,ref_type) VALUES('Berline',1,2)

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    En fait c'est que l id max que je voulais n'est pas un auto_increment mais c est pas grave ca me forcera a codé mon appli à la place d inseré à la main les données

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 19
    Points
    19
    Par défaut
    Meme si le post est super vieux, je vais donner une soluce qui pourra sevir dans le meme type de cas
    (dans ce cas, super pratique pour indéxer un champ de position qui ne peut être géré avec un auto-increment) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO ma_table SET champ1=xxx, champ2=xxx, champ_position=(SELECT MAX(champ_position) FROM ma_table AS nom_au_choix)+1
    En fait mêm si le 'AS nom_au_choix' ne parait pas utile dans 'FROM table AS nom_au_choix' il faut le mettre car sinon ça ne marche pas

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Citation Envoyé par *alexandre* Voir le message
    En fait c'est que l id max que je voulais n'est pas un auto_increment mais c est pas grave ca me forcera a codé mon appli à la place d inseré à la main les données
    Oula, sur une table de message en plus .. vous allez avoir plein d'erreur de duplication de clef primaire avec une telle démarche ...

    Revoyez la conception de votre table ...

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

Discussions similaires

  1. Select max id avant insertion (pb insertion parallèles)
    Par antoine.ginsburg dans le forum Persistance des données
    Réponses: 2
    Dernier message: 02/08/2011, 10h08
  2. Récupérer le résultat d'un "select max" dans un champ d'un formulaire
    Par ndukuliki dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 15/02/2010, 18h38
  3. Plusieurs Select Max() dans une seule table
    Par lindag dans le forum Designer
    Réponses: 6
    Dernier message: 08/10/2009, 13h51
  4. erreur suite à un select MAX() dans sqlserver 2005
    Par thor76160 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/03/2009, 10h17
  5. probleme selection max dans recordset
    Par marcuscircus dans le forum VBA Access
    Réponses: 8
    Dernier message: 04/08/2008, 17h10

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