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

SQL Oracle Discussion :

Insert into avec une requete


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 21
    Points : 20
    Points
    20
    Par défaut Insert into avec une requete
    Bonjour
    je me permet de solliciter votre aide
    je veux insérer dans une table un élément qui provient d'une autre avec un select j'ai écrit la requête suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     INSERT INTO "EF"."BP_GARANTIE_GENERATION" (BP_GARGEN_ID,bp_gargen_garantie_id)
    VALUES (1,
    " select bp_garantie_id from bp_garantie  where bp_garantie_nom='GAMME PASSIVE' and bp_garantie_responsable_top='O' ");
    mais il m'affiche une erreur identifiant trop long

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Quand on utilise le mot clef VALUES, on insère qu'une seule entrée.
    Vous pouvez insérer le résultat d'une requête, mais on n'utilise pas alors ce mot, on écrit... rien !
    Il faut aussi penser à mettre les constantes dans le résultat du select.

    Dans votre cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO "EF"."BP_GARANTIE_GENERATION" (BP_GARGEN_ID, bp_gargen_garantie_id)
    SELECT 1, bp_garantie_id
      from bp_garantie 
     where bp_garantie_nom = 'GAMME PASSIVE'
       and bp_garantie_responsable_top = 'O';
    Edit : j'ai peut-être répondu un peu vite.
    Si votre requête ne retourne qu'une et une seule valeur, vous pouvez tout-à-fait mettre le résultat de celle-ci dans VALUES. On délimite le select avec des parenthèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO "EF"."BP_GARANTIE_GENERATION" (BP_GARGEN_ID,bp_gargen_garantie_id)
    VALUES (1, (select bp_garantie_id
                  from bp_garantie
                 where bp_garantie_nom = 'GAMME PASSIVE'
                   and bp_garantie_responsable_top = 'O'));

  3. #3
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Bonjour,

    La syntaxe exacte est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO MaTableA (MesColonnes)
    SELECT MesColonnes FROM MaTableB

  4. #4
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Quand on utilise le mot clef VALUES, on insère qu'une seule entrée.
    Vous pouvez insérer le résultat d'une requête, mais on n'utilise pas alors ce mot, on écrit... rien !
    Il faut aussi penser à mettre les constantes dans le résultat du select.

    Dans votre cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO "EF"."BP_GARANTIE_GENERATION" (BP_GARGEN_ID, bp_gargen_garantie_id)
    SELECT 1, bp_garantie_id
      from bp_garantie 
     where bp_garantie_nom = 'GAMME PASSIVE'
       and bp_garantie_responsable_top = 'O';
    Edit : j'ai peut-être répondu un peu vite.
    Si votre requête ne retourne qu'une et une seule valeur, vous pouvez tout-à-fait mettre le résultat de celle-ci dans VALUES. On délimite le select avec des parenthèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO "EF"."BP_GARANTIE_GENERATION" (BP_GARGEN_ID,bp_gargen_garantie_id)
    VALUES (1, (select bp_garantie_id
                  from bp_garantie
                 where bp_garantie_nom = 'GAMME PASSIVE'
                   and bp_garantie_responsable_top = 'O'));



    Merci ça fonctionne très bien

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

Discussions similaires

  1. INSERT INTO avec une condition
    Par pol2095 dans le forum Requêtes
    Réponses: 5
    Dernier message: 31/01/2011, 23h06
  2. [Toutes versions] INSERT INTO avec une Clause Where
    Par casavba dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/02/2010, 21h16
  3. [VB.NET]Utiliser un INSERT INTO avec une VIew Access
    Par Ashleyriot dans le forum Accès aux données
    Réponses: 3
    Dernier message: 23/11/2006, 18h31
  4. insert into avec une date
    Par LeXo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/11/2006, 22h08
  5. INSERT INTO avec une valeur numéroauto
    Par priest69 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 08/11/2005, 15h39

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