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 :

Syntaxe de la commande INSERT..SELECT


Sujet :

Requêtes MySQL

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Syntaxe de la commande INSERT..SELECT
    Bonjour à tous,
    Petite question sur la syntaxe de la commande INSERT INTO... SELECT...;
    mysql.com propose l'exemple suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO tblTemp2 (fldID) SELECT tblTemp1.fldOrder_ID FROM tblTemp1 WHERE tblTemp1.fldOrder_ID > 100;
    Ce dernier permet l'enrichissement d'un champs dans une table, à partir d'un SELECT dans une autre.
    Est il possible de combiner une commande SELECT une VALUE pour enrichir 2 champs. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO tblTemp2 (fldID,fldID2) SELECT tblTemp1.fldOrder_ID FROM tblTemp1 WHERE tblTemp1.fldOrder_ID > 100,'mon filed2';
    Merci par avance de votre aide à l'autodidacte que je suis.

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    As-tu essayé ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    J'ai effectivement essayé avec pour résultat le message habituel :
    You have an error in your SQL syntax; check the manual... right syntax to use near ''field2'

    Je me permet d'ajouter que sans cela je ne me serais pas permis de déranger le habitués de ce forum(que je n'oblige d'ailleurs pas à répondre). J'avoue être un peu aigri par la phrase moralisatrice ajoutée à ta réponse. Il me semble être respectueux et correct. Un peu d'humilité serait de bon ton et n'enlèverait rien à tes compétences surement évidentes.

  4. #4
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Oui c'est possible mais le champ field2 est mal positionné.
    Il doit être dans la sélection.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO tblTemp2 (fldID,fldID2) 
       SELECT tblTemp1.fldOrder_ID, 'mon field2'
         FROM tblTemp1 
       WHERE tblTemp1.fldOrder_ID > 100;
    Bonne journée
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    En fait la question est surement incomplète... Je désirerais insérer 2 champs dans la table tblTemp2 :
    - fldID qui serait issu d'une requête SELECT dans la table tblTemp1
    - fldID2 qui serait issu d'une variable, voire d'une nouvelle commande SELECT sur une autre table.

    Mon problème est de savoir si l'on peut concaténer dans une commande INSERT
    un enrichissement par une VALUE(..) et par une SELECT.

    Merci tout de même pour vos réponses.

  6. #6
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    la requete d'Alexandre doit faire ce que tu veux

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Ok, ça marche tel que préconisé par Alexandre. Je m'étais imaginé qu'il fallait utiliser la commande VALUE.
    Merci beaucoup à tous et bonne journée.

  8. #8
    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
    Mon problème est de savoir si l'on peut concaténer dans une commande INSERT
    un enrichissement par une VALUE(..) et par une SELECT.
    non, on ne peut pas mélanger les deux syntaxes. Mais ce n'est pas grave, car tu peux mettre dans le SELECT des valeurs qui ne proviennent pas d'une table. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO cible(Txt, DateHeure, Statut, Nb)
    SELECT S.Truc, NOW(), 2, @variable
    FROM source AS S
    Pour ce qui est d'insérer une valeur provenant d'une autre table... On retrouve en fait la problématique classique du SELECT : y a-t-il une jointure entre tes tables ? si ce n'est pas le cas, tu peux tj, à partir de la version 4.1, utiliser une sous-requête scalaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO cible (col1, col2)
    SELECT S1.
    truc, (SELECT MAX(S2.machin) FROM source2 AS S2)
    FROM source1 AS S1
    Sinon, tu ne devrais pas monter ainsi sur tes grands chevaux quand on essaie de t'aider... Dans ta formulation, tu demandes un truc qui nous semble évident et devrais marcher du premier coup, et tu ne fais état d'aucun message d'erreur. Il était donc assez naturel de te demander si tu avais essayé (et implicitement ce que ça avait donné).
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci pour tous ces compléments qui vont m'être utiles.
    En ce qui concerne ma saute ou sotte d'humeur, elle ne portait pas sur la réponse en elle même, mais sur la phrase signature "Il n'y a pas de bonnes réponses à une mauvaise question."
    Même si elle ne m'était pas adressée, il me semble que pour qu'une discussion soit profitable il faut qu'un respect mutuel s'instaure et que la personne qui répond ne s'impose pas en tant qu'ange moralisateur.
    Je suis peut être trop respectueux moi même, ou trop sensible qui sait...
    Dans tous les cas je vous remercie tous (y compris qi130) pour votre abnégation et pour le temps que vous passez à répondre à nos besoins. Dommage que les Réseaux et Télécoms n'entre pas dans le périmètre de ce site cela m'aurait peut être permis d'aider aussi... modestement.

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut qi130 et la signature
    Merci tout d'abord de l'attention que vous portez au forum et à ce qui l'entoure. Ceci démontre, le sérieux et la rigueur du site mais je crois que la question ne se posait pas.
    Je ne suis pas en effet un spécialiste des forums en général, je les consulte mais n'intervient que rarement par manque de connaissance ou par peur de mal faire parfois. J'ai tout de même,une certaine expérience de formateur qui fait que certaines choses me heurte et, en particulier, le manque d'humilité par rapport à une personne en attente de connaissance.
    J'admets bien franchement que la signature de qi130 peut être interprétée comme un conseil, ce qui est louable, mais aussi comme une agression par quelqu'un peu sur de sa technique et je pense ne pas être le seul dans ce cas.
    Il est vrai par ailleurs que le contenu de certains messages (questions et réponses) sont parfois bien loin de la rigueur et de l'amabilité et c'est en ça que je loue à nouveau votre abnégation et votre modération .
    Que qi130 ne m'en veuille pas, il apporte certainement plus qu'il ne fâche.
    Je vais de ce click consulter le forum réseaux et SI.
    Merci encore à tous, bon courage et meilleurs voeux pour 2007.

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

Discussions similaires

  1. [INSERT][SELECT] insert avec un select imbriqué
    Par narmataru dans le forum SQL
    Réponses: 11
    Dernier message: 06/03/2013, 03h04
  2. syntaxe commande INSERT INTO
    Par hottnikks_79 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2006, 13h52
  3. Réponses: 3
    Dernier message: 25/10/2006, 17h45
  4. [JSP]Erreur de syntaxe dans un tag <option select
    Par logica dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 03/05/2005, 14h33
  5. insert-select sur 2 base différente
    Par gskoala dans le forum Paradox
    Réponses: 2
    Dernier message: 16/11/2004, 15h11

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